SSH 跳板机配置实战:一条 ProxyJump 告别手动层层登录
在公司或云上环境里,很多生产机器并不直接暴露公网,只能先登录一台跳板机,再从跳板机 SSH 到内网目标机器。最原始的做法是:先 ssh jump@bastion,进去后再 ssh user@10.0.1.23。每天重复几次,又慢又容易输错。
其实 OpenSSH 早就内置了解法——ProxyJump,一条命令直达:
ssh -J jump@bastion user@10.0.1.23
这个 -J 参数就是把登录流程串起来:本地先连跳板机,再自动经由跳板机建立到目标机的隧道,你看到的还是一个普通的 SSH 会话,scp、sftp、端口转发全部照常可用。
如果目标机器固定,建议写进 ~/.ssh/config,以后连 ssh prod-db 即可:
Host bastion
HostName bastion.example.com
User jump
IdentityFile ~/.ssh/id_ed25519
Host prod-db
HostName 10.0.1.23
User ops
ProxyJump bastion
需要经过两层跳板也只是多写一个名字:ProxyJump bastion,relay2,OpenSSH 会按顺序逐层打通。
几个实用细节:
-
密钥只放本地就够。配合
ssh-agent转发(ForwardAgent yes写在跳板机 Host 段),跳板机上不需要再放私钥,目标机的认证仍然用你本地的密钥完成,减少密钥散落。 -
排错时加上
-v:ssh -v -J jump@bastion user@10.0.1.23,能看到连接是在哪一层卡住的——是跳板机连不上,还是目标机拒绝了密钥,一目了然。 -
旧版本兼容。如果跳板机是老系统、OpenSSH 低于 7.3(2016 年的版本了),不支持
-J,可以用等价的 ProxyCommand 写法:
ProxyCommand ssh -W %h:%p jump@bastion
把常用目标机器的 Host 段维护好之后,多层内网跳转就和直连一样顺手,复制粘贴长命令、手动两层登录的时代可以结束了。
- 点赞
- 收藏
- 关注作者
评论(0)