SSH 跳板机配置实战:一条 ProxyJump 告别手动层层登录

举报
yd_227538180 发表于 2026/10/22 14:02:26 2026/10/22
【摘要】 在公司或云上环境里,很多生产机器并不直接暴露公网,只能先登录一台跳板机,再从跳板机 SSH 到内网目标机器。最原始的做法是:先 ssh jump@bastion,进去后再 ssh user@10.0.1.23。每天重复几次,又慢又容易输错。其实 OpenSSH 早就内置了解法——ProxyJump,一条命令直达:ssh -J jump@bastion user@10.0.1.23这个 -J ...

在公司或云上环境里,很多生产机器并不直接暴露公网,只能先登录一台跳板机,再从跳板机 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 会按顺序逐层打通。

几个实用细节:

  1. 密钥只放本地就够。配合 ssh-agent 转发(ForwardAgent yes 写在跳板机 Host 段),跳板机上不需要再放私钥,目标机的认证仍然用你本地的密钥完成,减少密钥散落。

  2. 排错时加上 -v:ssh -v -J jump@bastion user@10.0.1.23,能看到连接是在哪一层卡住的——是跳板机连不上,还是目标机拒绝了密钥,一目了然。

  3. 旧版本兼容。如果跳板机是老系统、OpenSSH 低于 7.3(2016 年的版本了),不支持 -J,可以用等价的 ProxyCommand 写法:
    ProxyCommand ssh -W %h:%p jump@bastion

把常用目标机器的 Host 段维护好之后,多层内网跳转就和直连一样顺手,复制粘贴长命令、手动两层登录的时代可以结束了。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。