多台云服务器只开一个 SSH 入口:跳板机 + ProxyJump 实战
【摘要】 手里云服务器一多,SSH 就成了麻烦事:每台都开公网 22 端口、每台都要记 IP 和端口,时间一长,自己都记不清哪台是哪台。上周把几台机器整理了一遍,方案很简单——只留一台机器暴露 SSH 做跳板,其他机器全部走内网,用 ProxyJump 一跳直达。本文记录完整配置过程和几个坑。 一、先定拓扑跳板机 bastion:公网可达,只开 22 端口内网机 node-01 / node-02:只...
手里云服务器一多,SSH 就成了麻烦事:每台都开公网 22 端口、每台都要记 IP 和端口,时间一长,自己都记不清哪台是哪台。上周把几台机器整理了一遍,方案很简单——只留一台机器暴露 SSH 做跳板,其他机器全部走内网,用 ProxyJump 一跳直达。本文记录完整配置过程和几个坑。
一、先定拓扑
- 跳板机 bastion:公网可达,只开 22 端口
- 内网机 node-01 / node-02:只有内网 IP(比如 192.168.x.x),安全组里只放行来自跳板机的 22
- 本地笔记本:保存所有私钥
好处很直接:公网攻击面只剩一台;内网机基本不会被公网扫描到;以后加机器只改本地一份 config,不用再记新 IP。
二、本地 ~/.ssh/config 配置
关键就是 ProxyJump,一份配置搞定多级跳转:
# 跳板机
Host bastion
HostName 203.0.113.10
User ubuntu
Port 22
IdentityFile ~/.ssh/id_ed25519_bastion
# 内网机,经跳板机中转
Host node-01
HostName 192.168.10.11
User ubuntu
ProxyJump bastion
IdentityFile ~/.ssh/id_ed25519_nodes
Host node-02
HostName 192.168.10.12
User ubuntu
ProxyJump bastion
IdentityFile ~/.ssh/id_ed25519_nodes
之后 ssh node-01 直接登录,中间经过跳板机自动转发,不用手动两步跳。scp 照常用:scp backup.tar.gz node-01:/tmp/。
多级跳板也支持,逗号分隔按顺序跳:ProxyJump bastion,node-01。
三、跳板机自身的加固(不能省)
跳板机是唯一暴露面,基础加固必须做:
- 禁密码登录:
/etc/ssh/sshd_config里PasswordAuthentication no,只留公钥。 - 换默认端口:改成
Port 2222之类,减少被扫描的噪音(这是降噪手段,不是安全手段)。 - 装 fail2ban:
apt install fail2ban,默认规则就能挡掉大部分爆破。 - 禁 root 登录:
PermitRootLogin no,用普通用户 + sudo。
改完 systemctl reload sshd。注意:改 sshd 配置之前,先保持一个已连接的会话不断开,配错了还有机会救回来。
四、内网机的安全组
内网机安全组入方向只放一行:来源填跳板机的内网 IP(或跳板机所在安全组),协议 TCP,端口 22。出方向保持默认。这样即使有人拿到内网机 IP,没有跳板机也连不上。
五、踩过的三个坑
- ProxyJump 要求 OpenSSH ≥ 7.3。老系统(比如 CentOS 7 自带的)不支持,要改用
ProxyCommand ssh -W %h:%p bastion写法。 - 每台机器的
~/.ssh权限必须是 700、authorized_keys必须是 600,否则密钥登录会静默失败,排错能排半天。 - 不要在跳板机上存放内网机的私钥。正确做法是本地直连、跳板机只做 TCP 转发;临时要在跳板机上再跳,用
ssh -A做 agent 转发,用完即走。
六、小结
一台跳板机 + 一份 config,解决多机器 SSH 管理混乱。攻击面收敛到一个入口,加固也只需要认真做一台。适合机器数量在个位数的个人和小团队场景。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)