{"id":20779149,"url":"https://github.com/bastillion-io/bastillion-ec2","last_synced_at":"2025-04-04T20:15:48.350Z","repository":{"id":8394317,"uuid":"9972351","full_name":"bastillion-io/Bastillion-EC2","owner":"bastillion-io","description":"A web-based SSH console to execute commands and manage multiple EC2 instances simultaneously running on Amazon Web Services (AWS).","archived":false,"fork":false,"pushed_at":"2024-03-19T06:43:45.000Z","size":3551,"stargazers_count":424,"open_issues_count":30,"forks_count":74,"subscribers_count":22,"default_branch":"master","last_synced_at":"2024-04-11T02:52:45.693Z","etag":null,"topics":["aws","bastion-host","ec2","java","javascript","ssh","ssh-client","ssh-server","web-based","webapp"],"latest_commit_sha":null,"homepage":"https://www.bastillion.io/features.html#ec2box","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"panhui/maipian","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bastillion-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2013-05-10T01:48:41.000Z","updated_at":"2024-04-25T14:49:18.605Z","dependencies_parsed_at":"2024-04-25T14:49:12.919Z","dependency_job_id":"2969b3df-4cb8-4599-a21f-e2d26701dbb9","html_url":"https://github.com/bastillion-io/Bastillion-EC2","commit_stats":null,"previous_names":["skavanagh/ec2box"],"tags_count":79,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bastillion-io%2FBastillion-EC2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bastillion-io%2FBastillion-EC2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bastillion-io%2FBastillion-EC2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bastillion-io%2FBastillion-EC2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bastillion-io","download_url":"https://codeload.github.com/bastillion-io/Bastillion-EC2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247242681,"owners_count":20907134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","bastion-host","ec2","java","javascript","ssh","ssh-client","ssh-server","web-based","webapp"],"created_at":"2024-11-17T13:26:18.743Z","updated_at":"2025-04-04T20:15:48.332Z","avatar_url":"https://github.com/bastillion-io.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Build](https://github.com/bastillion-io/Bastillion-EC2/actions/workflows/github-build.yml/badge.svg)\n![CodeQL](https://github.com/bastillion-io/Bastillion-EC2/actions/workflows/codeql-analysis.yml/badge.svg)\n\n![Bastillion for EC2](https://www.bastillion.io/images/bastillion_40x40.png) Bastillion for EC2\n======\nA web-based ssh console to execute commands and manage multiple EC2 instances\nsimultaneously running on Amazon Web Services (AWS). Bastillion-EC2 allows you to share\nterminal commands and upload files to all your EC2 instances. Once the sessions\nhave been opened you can select a single EC2 instance or any combination to run\nyour commands.  Also, additional instance administrators can be added and their\nterminal sessions and history can be audited.  \n\n![Terminals](https://www.bastillion.io/images/500x300/bastillion-ec2.png)\n\n\nBastillion for EC2 Releases\n------\nBastillion-EC2 is available for free use under the Prosperity Public License\n\nhttps://github.com/bastillion-io/Bastillion-EC2/releases\n\nor purchase from the AWS marketplace\n\nhttps://aws.amazon.com/marketplace/pp/Loophole-LLC-Bastillion-for-EC2/B076D7XMK6\n\nPrerequisites\n-------------\n**Open-JDK / Oracle-JDK - 1.9 or greater**\n\n*apt-get install openjdk-9-jdk*\n\n\u003e http://www.oracle.com/technetwork/java/javase/downloads/index.html\n\n**Install [Authy](https://authy.com/) or [Google Authenticator](https://github.com/google/google-authenticator)** to enable two-factor authentication with Android or iOS\n\n| Application          | Android                                                                                             | iOS                                                                        |             \n|----------------------|-----------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|\n| Authy                | [Google Play](https://play.google.com/store/apps/details?id=com.authy.authy)                        | [iTunes](https://itunes.apple.com/us/app/authy/id494168017)                |\n| Google Authenticator | [Google Play](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2) | [iTunes](https://itunes.apple.com/us/app/google-authenticator/id388497605) |\n\nTo Run Bundled with Jetty\n------\nDownload bastillion-ec2-jetty-vXX.XX.tar.gz\n\nhttps://github.com/bastillion-io/Bastillion-EC2/releases\n\nExport environment variables\n\nfor Linux/Unix/OSX\n\n     export JAVA_HOME=/path/to/jdk\n     export PATH=$JAVA_HOME/bin:$PATH\n\nfor Windows\n\n     set JAVA_HOME=C:\\path\\to\\jdk\n     set PATH=%JAVA_HOME%\\bin;%PATH%\n\nStart Bastillion\n\nfor Linux/Unix/OSX\n\n        ./startBastillion-EC2.sh\n\nfor Windows\n\n        startBastillion-EC2.bat\n\t\nMore documentation at: https://www.bastillion.io/docs/bastillion-ec2/index.html\n\t\n\t\nBuild from Source\n------\nInstall Maven 3 or greater\n\n*apt-get install maven*\n\n\u003e http://maven.apache.org \n\nExport environment variables\n\n    export JAVA_HOME=/path/to/jdk\n    export M2_HOME=/path/to/maven\n    export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH\n\nIn the directory that contains the pom.xml run\n\n\tmvn package jetty:run\n\n*Note: Doing a mvn clean will delete the H2 DB and wipe out all the data.*\n\nUsing Bastillion-EC2\n------\nOpen browser to https://\\\u003cwhatever ip\\\u003e:8443\n\nLogin with \n\n\tusername:admin \n\tpassword:changeme\n\t\n*Note: When using the AMI instance, the password is defaulted to the \\\u003cInstance ID\\\u003e. Also, the AMI uses port 443 as in https://\\\u003cInstance IP\\\u003e:443*\n\nSteps:\n1. Configure an IAM Role with Account ID for your user and set generated ARN in Bastillion-EC2\n2. Import the Bastillion-EC2 public SSH key to the EC2 AWS console.\n3. Create EC2 instanaces with the imported key.\n4. Start composite-ssh sessions or create and execute a script across multiple sessions\n5. Add instance administrator accounts\n\nMore info at https://www.bastillion.io/docs/bastillion-ec2/index.html\n\nRestricting User Access\n------\nAdministrative access can be restricted through the use of tags defined in a user's profile. Profile tags must correspond to the instance tags that have been set through the AWS console.\n\nTags work on a name or name/value pair.\n\nfor example\n\n    tag-name\n    tag-name=mytag\n\nor multiple\n\n    tag-name1,tag-name2\n    tag-name1=mytag1,tag-name2=mytag2\n    \nSupplying a Custom SSH Key Pair\n------\nBastillion-EC2 generates its own public/private SSH key upon initial startup for use when registering systems.  You can specify a custom SSH key pair in the Bastillion-EC2Config.properties file.\n\nFor example:\n\n\t#set to true to regenerate and import SSH keys  --set to true\n\tresetApplicationSSHKey=true\n\n\t#SSH Key Type 'dsa' or 'rsa'\n\tsshKeyType=rsa\n\n\t#private key  --set pvt key\n\tprivateKey=/Users/kavanagh/.ssh/id_rsa\n\n\t#public key  --set pub key\n\tpublicKey=/Users/kavanagh/.ssh/id_rsa.pub\n\t\n\t#default passphrase  --leave blank if passphrase is empty\n\tdefaultSSHPassphrase=myPa$$w0rd\n\t\nAfter startup and once the key has been registered it can then be removed from the system. The passphrase and the key paths will be removed from the configuration file.\n\nExternal Authentication\n------\nExternal Authentication can be enabled through the Bastillion-EC2Config.properties.\n\nFor example:\n\n\t#specify a external authentication module (ex: ldap-ol, ldap-ad).  Edit the jaas.conf to set connection details\n\tjaasModule=ldap-ol\n    \nConnection details need to be set in the jaas.conf file\n\n    ldap-ol {\n    \tcom.sun.security.auth.module.LdapLoginModule SUFFICIENT\n    \tuserProvider=\"ldap://hostname:389/ou=example,dc=bastillion,dc=com\"\n    \tuserFilter=\"(\u0026(uid={USERNAME})(objectClass=inetOrgPerson))\"\n    \tauthzIdentity=\"{cn}\"\n    \tuseSSL=false\n    \tdebug=false;\n    };\n    \n\nAdministrators will be added as they are authenticated and profiles of systems may be assigned by full-privileged users.\n\nUser LDAP roles can be mapped to profiles defined in Bastillion-EC2 through the use of the org.eclipse.jetty.jaas.spi.LdapLoginModule.\n\n    ldap-ol-with-roles {\n        //openldap auth with roles that can map to profiles\n        org.eclipse.jetty.jaas.spi.LdapLoginModule required\n        debug=\"false\"\n        useLdaps=\"false\"\n        contextFactory=\"com.sun.jndi.ldap.LdapCtxFactory\"\n        hostname=\"\u003cSERVER\u003e\"\n        port=\"389\"\n        bindDn=\"\u003cBIND-DN\u003e\"\n        bindPassword=\"\u003cBIND-DN PASSWORD\u003e\"\n        authenticationMethod=\"simple\"\n        forceBindingLogin=\"true\"\n        userBaseDn=\"ou=users,dc=bastillion,dc=com\"\n        userRdnAttribute=\"uid\"\n        userIdAttribute=\"uid\"\n        userPasswordAttribute=\"userPassword\"\n        userObjectClass=\"inetOrgPerson\"\n        roleBaseDn=\"ou=groups,dc=bastillion,dc=com\"\n        roleNameAttribute=\"cn\"\n        roleMemberAttribute=\"member\"\n        roleObjectClass=\"groupOfNames\";\n    };\n\nUsers will be added/removed from defined profiles as they login and when the role name matches the profile name.\n\nAuditing\n------\nAuditing is disabled by default. Audit logs can be enabled through the **log4j2.xml** by uncommenting the **io.bastillion.manage.util.SystemAudit** and the **audit-appender** definitions.\n\n\u003e https://github.com/bastillion-io/Bastillion-EC2/blob/master/src/main/resources/log4j2.xml#L19-L22\n\t\nAuditing through the application is only a proof of concept.  It can be enabled in the BastillionConfig.properties.\n\n\t#enable audit  --set to true to enable\n\tenableInternalAudit=true\n\nAcknowledgments\n------\nSpecial thanks goes to these amazing projects which makes this (and other great projects) possible.\n\n+ [JSch](http://www.jcraft.com/jsch) Java Secure Channel - by [ymnk](https://github.com/ymnk)\n+ [term.js](https://github.com/chjj/term.js) A terminal written in javascript - by [chjj](https://github.com/chjj)\n\nThird-party dependencies are mentioned in the [_3rdPartyLicenses.md_](3rdPartyLicenses.md)\n\nThe Prosperity Public License\n-----------\nBastillion-EC2 is available for free use under the Prosperity Public License\n\nAuthor\n------\n**Loophole, LLC - Sean Kavanagh**\n\n+ sean.p.kavanagh6@gmail.com\n+ https://twitter.com/spkavanagh6\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbastillion-io%2Fbastillion-ec2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbastillion-io%2Fbastillion-ec2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbastillion-io%2Fbastillion-ec2/lists"}