{"id":32957383,"url":"https://github.com/bastillion-io/Bastillion-EC2","last_synced_at":"2025-11-16T15:01:47.565Z","repository":{"id":8394317,"uuid":"9972351","full_name":"bastillion-io/Bastillion-EC2","owner":"bastillion-io","description":"Bastillion for EC2 provides a browser-based SSH management platform designed specifically for AWS environments.","archived":false,"fork":false,"pushed_at":"2025-11-06T14:14:28.000Z","size":3535,"stargazers_count":428,"open_issues_count":20,"forks_count":67,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-11-06T14:24:37.795Z","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":"2025-11-06T14:14:32.000Z","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,"purl":"pkg:github/bastillion-io/Bastillion-EC2","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","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bastillion-io%2FBastillion-EC2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284725595,"owners_count":27053255,"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","status":"online","status_checked_at":"2025-11-16T02:00:05.974Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2025-11-12T23:00:22.449Z","updated_at":"2025-11-16T15:01:47.559Z","avatar_url":"https://github.com/bastillion-io.png","language":"Java","funding_links":[],"categories":["Open Source Repos"],"sub_categories":["Elastic Compute Cloud"],"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)\n\n# Bastillion for EC2\n\n**A modern, web-based SSH console and key management tool for Amazon EC2.**\n\nBastillion for EC2 provides a browser-based SSH management platform designed specifically for AWS environments.  \nIt enables secure access, auditing, and centralized key management across all your EC2 instances—built on the same foundation as Bastillion and now updated for **Java 21 / Jakarta EE 11**.\n\n![Terminals](https://www.bastillion.io/images/500x300/bastillion-ec2.png)\n\n---\n\n## 🚀 What’s New\n- Upgraded to **Java 21** and **Jakarta EE 11**\n- Full support for **Ed25519** (default) and **Ed448** SSH keys\n- New **daemon mode** for Jetty startup (`--daemon`)\n- Updated dependencies for improved security and performance\n- Clarified AWS IAM and EC2 integration steps\n\n---\n\n## Installation Options\n**Free:** https://github.com/bastillion-io/Bastillion-EC2/releases  \n**AWS Marketplace:** https://aws.amazon.com/marketplace/pp/prodview-e2pbdearyxwuk\n\n---\n\n## Prerequisites\n\n### Java 21 (OpenJDK or Oracle JDK)\n```bash\napt-get install openjdk-21-jdk\n```\n\u003e Oracle JDK download: http://www.oracle.com/technetwork/java/javase/downloads/index.html\n\n### Authenticator (for 2FA)\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\n---\n\n## Run with Jetty (Bundled)\n\nDownload: https://github.com/bastillion-io/Bastillion-EC2/releases\n\n### Set Environment Variables\n**Linux / macOS**\n```bash\nexport JAVA_HOME=/path/to/jdk\nexport PATH=$JAVA_HOME/bin:$PATH\n```\n**Windows**\n```cmd\nset JAVA_HOME=C:\\path\\to\\jdk\nset PATH=%JAVA_HOME%\\bin;%PATH%\n```\n\n### Start Bastillion for EC2\nForeground (interactive):\n```bash\n./startBastillion-EC2.sh\n```\n\nDaemon (background):\n```bash\n./startBastillion-EC2.sh --daemon\n```\nLogs are stored in `jetty/logs/YYYY_MM_DD.jetty.log`.\n\nEnable debug output:\n```bash\n./startBastillion-EC2.sh -d\n```\n\nStop:\n```bash\n./stopBastillion-EC2.sh\n```\n\nAccess in browser:  \n`https://\u003cserver-ip\u003e:8443` (or for AMI instances: `https://\u003cinstance-ip\u003e:443`)\n\nDefault credentials:\n```\nusername: admin\npassword: changeme\n```\n*(For AMI, the password defaults to the EC2 Instance ID.)*\n\n---\n\n## AWS Integration Steps\n1. Configure an **IAM Role** with your Account ID and set the generated ARN in Bastillion-EC2.\n2. Import the **Bastillion-EC2 public SSH key** into the AWS EC2 console.\n3. Launch EC2 instances using that key pair.\n4. Start composite SSH sessions or run scripts across multiple instances.\n5. Add instance administrator accounts as needed.\n\nMore info: https://www.bastillion.io/docs/bastillion-ec2/index.html\n\n---\n\n## Restricting User Access\nAdministrative access can be restricted through tags defined in a user’s profile.  \nProfile tags must match the EC2 instance tags set in AWS.\n\nExamples:\n```\ntag-name\ntag-name=mytag\ntag1=value1,tag2=value2\n```\n\n---\n\n## Custom SSH Key Pair\n\nSpecify a custom SSH key pair or let Bastillion E2 generate its own on startup:\n\n```properties\n# Regenerate and import SSH keys\nresetApplicationSSHKey=true\n\n# SSH key type ('rsa', 'ecdsa', 'ed25519', or 'ed448')\n# Supported options:\n#   rsa    - Classic, widely compatible (configurable length, default 4096)\n#   ecdsa  - Faster, smaller keys (P-256/384/521 curves)\n#   ed25519 - Default and recommended (≈ RSA-4096, secure and fast)\n#   ed448  - Extra-strong (≈ RSA-8192, slower and less supported)\nsshKeyType=ed25519\n\n# Private key\nprivateKey=/Users/you/.ssh/id_rsa\n\n# Public key\npublicKey=/Users/you/.ssh/id_rsa.pub\n\n# Passphrase (leave blank if none)\ndefaultSSHPassphrase=myPa$$w0rd\n```\n\nOnce registered, you can remove the key files and passphrase from the configuration.\n\n---\n\n## External Authentication (LDAP / AD)\nEnable in `Bastillion-EC2Config.properties`:\n```properties\njaasModule=ldap-ol\n```\n\nConfigure `jaas.conf`:\n```\nldap-ol {\n    com.sun.security.auth.module.LdapLoginModule SUFFICIENT\n    userProvider=\"ldap://hostname:389/ou=example,dc=bastillion,dc=com\"\n    userFilter=\"(\u0026(uid={USERNAME})(objectClass=inetOrgPerson))\"\n    authzIdentity=\"{cn}\"\n    useSSL=false\n    debug=false;\n};\n```\n\nMap LDAP roles to Bastillion profiles:\n```\nldap-ol-with-roles {\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```\n\nUsers are added/removed as they authenticate when their role matches a Bastillion profile.\n\n---\n\n## Auditing\nAuditing is disabled by default.  \nEnable in **log4j2.xml** by uncommenting:\n- `io.bastillion.manage.util.SystemAudit`\n- `audit-appender`\n\n\u003e https://github.com/bastillion-io/Bastillion-EC2/blob/master/src/main/resources/log4j2.xml#L19-L22\n\nThen set in `Bastillion-EC2Config.properties`:\n```properties\nenableInternalAudit=true\n```\n\n---\n\n## Acknowledgments\nSpecial thanks to these projects that make Bastillion 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 JavaScript terminal) by [chjj](https://github.com/chjj)\n\nThird-party dependencies are listed in [_3rdPartyLicenses.md_](3rdPartyLicenses.md)\n\n---\n\n## License\nBastillion-EC2 is distributed under the **Prosperity Public License**.\n\n---\n\n## Author\n\n**Loophole, LLC — Sean Kavanagh**  \nEmail: [sean.p.kavanagh6@gmail.com](mailto:sean.p.kavanagh6@gmail.com)  \nInstagram: [@spkavanagh6](https://www.instagram.com/spkavanagh6/)","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"}