跳板机的作用
跳板机也称堡垒机,是一台你可以直接访问、同时能够访问内部服务器的服务器。对外仅开放堡垒机的 SSH 端口;内部服务器只接受来自内部网络的 SSH 连接。使用 ProxyJump 时,客户端先建立一条到堡垒机的 SSH 连接,再通过它建立第二条到目标服务器的端到端加密连接。堡垒机只转发流量,无法看到会话内容,私钥始终留在你的电脑上。
从命令行连接
-J 选项用于指定跳板机。多跳时用逗号分隔各台主机,连接会按指定顺序依次经过它们。如果经常使用同一路径,可以把设置加入 ~/.ssh/config,之后只需使用一个简短的别名。
ssh -J admin@bastion.example admin@app.internal
ssh -J admin@bastion.example,ops@hop2.example admin@app.internal
# ~/.ssh/config
Host app-internal
HostName app.internal
User admin
ProxyJump admin@bastion.example验证每一台主机的密钥
每一跳都是独立的 SSH 服务器,各自拥有主机密钥,因此应通过另一个可信渠道确认堡垒机和目标服务器的密钥指纹。任意一跳的密钥发生变化,都应像直接连接时一样认真核实。首次连接时,将显示的指纹与管理员在服务器上读取的值进行比较。
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256优先使用 ProxyJump,避免代理转发
代理转发(ssh -A)会让堡垒机上任何拥有足够权限的人在你保持连接期间使用你已加载的密钥。ProxyJump 不需要代理转发,因为对目标服务器的认证是在你自己的电脑上完成的。同时应避免在堡垒机上存储私钥,并限制可以登录堡垒机的人员。
常见故障
先确定故障发生在哪一跳:单独连接堡垒机,再运行带 -J 的 ssh -vvv,查看连接停在哪里。如果堡垒机连接正常而目标连接失败,原因通常是两者之间的防火墙、错误的内部主机名,或目标服务器不接受你的密钥。配置了 AllowTcpForwarding no 的服务器会拒绝充当跳板机。
CH-J Server Manager 中的跳板机
Alpha 0.1.1 可以通过已保存或手动输入的跳板机连接,已保存的主机还可组成最多三台跳板机的链路。每一跳都会检查主机密钥。可用性监视器只有在通往跳板机的会话已打开时,才会通过该会话检查跳板机后方的服务器;否则会将服务器显示为未验证,绝不会显示为在线。Beta 0.1.0 没有此功能。