一款现代化的、基于 Web 的 SSH 控制台与 SSH 密钥管理工具。
Bastillion 为你提供了一种简洁的、基于浏览器的方式来管理所有系统上的 SSH 访问——就像一个带有友好仪表盘的堡垒主机。它做两件事:
基于 Web 的 SSH 终端——一旦注册了主机,授权用户就可以直接从浏览器打开一个或多个实时终端会话,并且可以选择将命令同时广播到所有已打开的会话(可以想象成 tmux 的同步窗格,只不过对象是一组远程主机,而不是本地窗格)。
SSH 密钥管理——Bastillion 持有自己的 SSH 密钥对,并将公钥推送/轮换到你注册的主机上,因此单个用户永远不需要自己持有或管理这些系统的长期密钥。

两个实时 SSH 会话,分别连接到现有的 Web 和应用示例主机。
Bastillion 位于你的用户和他们需要访问的系统之间,充当可信第三方,而不是简单的密码保险库。以下是完整的生命周期,从头到尾。
在首次启动时,Bastillion 会先为自己生成一个 Ed25519 密钥对——这是唯一会被推送到你主机上的密钥。它会在控制台输出中显示,并且始终可以在设置中查看。
管理员在管理 → 系统下添加主机(用户、主机、端口,以及该主机 authorized_keys 文件的路径)。Bastillion 使用你提供的密码或口令认证一次,然后将其自己的公钥推送到该主机的 authorized_keys 中。从那时起,它使用该密钥进行连接——永远不存储密码。密钥一旦就位,状态就会变为成功。

系统会被分组到命名的配置文件中——可以理解为“生产”、“预发布”、“数据库层”。然后在管理 → 用户下将用户关联到配置文件,这是唯一控制谁可以访问什么的方式。撤销配置文件分配后,该访问权限会立即消失,无需轮换密钥。

被分配的用户打开 Secure Shell → Terminals,选择一个或多个系统,即可在浏览器中获得实时、可调整大小、基于 xterm 的终端,并排显示。只需输入一次,内容就会发送到每个标记为活动的终端——无论你选择了多少台主机,都是相同的按键、相同的命令、相同的输出形态。

由于每台主机都信任同一个应用密钥(而不是每个用户一个密钥),在 Manage SSH Keys 下禁用它一次,就会立即撤销所有位置上的访问权限——无需手动接触目标系统,也无需追查哪台服务器上残留着哪个过期密钥。

每次连接都会将目标系统提供的主机密钥与 Bastillion 为其记录的密钥进行比对。首次看到某台主机时,其密钥会被记录并信任;如果该密钥之后发生变化,连接将被拒绝,该系统会在 Manage → Host Keys 下显示为已更改——已阻止,同时显示已批准的指纹和提供的指纹,以便你区分重建的主机与被拦截的连接。信任新密钥是一项有意的、会被记录的操作。
这对堡垒机而言比笔记本电脑更重要。Bastillion 会将私钥交给目标系统,并在认证回退时提供你输入的密码或口令——因此,任何能在受管系统地址上应答的东西都会收集到该系统的凭据。在此检查存在之前,没有任何机制将该密钥与任何东西进行比对。
设置 hostKeyVerification=strict 还可要求管理员在首次连接每个新发现的主机之前批准该主机,或设置为 off 以恢复旧行为——参见配置。
这些终端中键入的所有内容以及返回的每一个字节都会被自动记录。管理员打开 Audit Sessions,按用户或系统筛选,并回放任何会话——对于跨多台主机的会话可并排回放,并带有文本过滤器,可直接跳转到关键行。输出在页面加载时流式呈现,因此即使某个会话转储了数百兆字节的日志,回放也毫不费力。
如果你需要向审计人员展示谁在何时何地运行了什么——这就是开箱即用捕获的证据。几乎每个合规框架都在某处有特权访问审计跟踪要求(PCI DSS、HIPAA、SOC 2、ISO 27001——任选其一),而这无需商业 PAM 产品即可满足该要求。会话默认保留 90 天(deleteAuditLogAfter),并且可以通过 ENABLE_INTERNAL_AUDIT=false 关闭记录——参见审计。

hostKeyVerification=accept-new)— 参见工作原理authorized_keys 中,这同时也会将 Bastillion 用户名写入目标主机自身的认证
日志。默认关闭;需要将每台主机配置为信任该 CA — 参见配置java -jar)形式运行,开箱即用 HTTPS — 参见下载与运行tools/migrateBastillion 在最多 8 个已注册系统下可无许可运行 — 足以在购买前进行真实试用。许可证可提高该上限。
.lic 文件。.lic 文件并复制其内容(一行)。LICENSE_KEY 环境变量进行设置:
export LICENSE_KEY=<paste license file contents here>
或将其粘贴到 BastillionConfig.properties 中的 licenseKey 里——如果两者都设置了,环境变量优先。许可证按年计费且不会自动续订——不会留存任何银行卡信息。当你收到到期警告时,从同一价格页面再次购买。
免费: https://github.com/Loophole-LLC/Bastillion/releases
apt-get install openjdk-21-jdk
| 应用 | Android | iOS |
|---|---|---|
| Authy | Google Play | iTunes |
| Google Authenticator | Google Play | iTunes |
从 Releases 下载最新的 jar:
java -jar bastillion-<version>.jar
在浏览器中访问:https://<server-ip>:8443 — 关于 Bastillion 首次运行时生成的自签名证书,请参阅下方的 TLS / HTTPS。
默认凭据:
username: admin
password: changeme
admin 拥有完全访问权限(管理所有系统上的用户、密钥和终端),且其默认密码是公开的,因此在添加任何系统之前请先处理它: