新手配置Linux SSH多重跳转应优先使用ProxyJump,需确保OpenSSH≥7.3、各节点密钥登录就绪,并通过~/.ssh/config定义跳转链路,或用-J参数快速调试。

新手配置Linux SSH多重跳转,核心是用好 ProxyJump,而不是手动一层层 ssh 登录。它不改变网络结构,只简化操作,同时完全保留跳板机的安全隔离作用。关键在于版本、密钥、配置三步到位,缺一不可。
确认OpenSSH版本是否支持
ProxyJump 功能从 OpenSSH 7.3 开始引入,本地终端和每一台跳板机都必须满足这个最低要求,否则配置无效或报错。
- 在你自己的电脑上运行:
ssh -V,看到类似OpenSSH_8.9p1或更高即可 - 登录第一台跳板机,执行:
sshd -V 2>&1 | head -1,确认服务端版本 ≥ 7.3 - 如果版本太低(比如 CentOS 7 默认是 7.4,但某些旧镜像可能更低),Ubuntu/Debian 运行
sudo apt update && sudo apt install openssh-client openssh-server;CentOS/RHEL 用sudo yum update openssh*
提前配好所有环节的密钥登录
多重跳转过程中,每一步都要能自动认证,不能中途卡在输密码。所以从本地到最后一台目标机,每个节点都得支持密钥登录。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 在本地生成密钥(推荐 Ed25519):
ssh-keygen -t ed25519 -C "me@work" - 把本地公钥
~/.ssh/id_ed25519.pub内容,逐个追加到每台跳板机和目标机的~/.ssh/authorized_keys中(可用ssh-copy-id或手动复制) - 验证:分别执行
ssh user@jump1、ssh user@jump2、ssh user@target,确保都不需要输密码
用 ~/.ssh/config 定义跳转链路
这是最清晰、可复用、兼容 scp/sftp 的方式。以“本地 → 跳板机A → 跳板机B → 目标服务器”为例:
- 编辑配置文件:
nano ~/.ssh/config - 写入以下内容(替换 IP、用户名、私钥路径):
Host jump-a
HostName 203.0.113.10
User admin
IdentityFile ~/.ssh/id_ed25519
Host jump-b
HostName 192.168.1.20
User ops
IdentityFile ~/.ssh/id_ed25519
ProxyJump jump-a
Host target-srv
HostName 10.10.5.100
User appuser
IdentityFile ~/.ssh/id_ed25519
ProxyJump jump-b
- 保存后设置权限:
chmod 600 ~/.ssh/config - 之后只需一条命令:
ssh target-srv,就能直连最内层服务器 - 传文件也一样简单:
scp file.txt target-srv:/tmp/
临时调试可用命令行参数
如果只是快速测试,或没权限改配置文件,直接用 -J 参数更轻量:
- 单跳:
ssh -J admin@203.0.113.10 appuser@192.168.10.5 - 双跳:
ssh -J admin@203.0.113.10,ops@192.168.1.20 appuser@10.10.5.100(逗号分隔,顺序即跳转顺序) - 注意:-J 后面的跳板机地址必须能被本地直接访问,且已配好密钥

















