Mac上SSH跳转核心是通过跳板机中转连接目标服务器,OpenSSH原生支持:推荐用-J参数一步直达;也可配置~/.ssh/config实现静态别名跳转;备用方案为手动两步登录。
mac 上通过 ssh 代理跳转连接跳板机(jump host)后面的服务器,核心是让本地终端不直接连目标机,而是先经跳板机中转。系统自带 openssh 完全支持,无需额外工具,关键在于用对命令或配好 config 文件。
用 -J 参数一步直达(推荐)
macOS 7.3+ 自带的 OpenSSH 支持 -J 参数,语法简洁、逻辑清晰,适合日常使用:
- 命令格式:
ssh -J jump_user@jump_host:port target_user@target_host:port - 例如跳板机是
vps1.example.org(用户alice),目标服务器是web01.internal(用户bob):ssh -J alice@vps1.example.org bob@web01.internal - 若跳板机端口不是 22,比如是 2222,写成:
ssh -J alice@vps1.example.org:2222 bob@web01.internal - 支持多级跳转,如经两台跳板机:
ssh -J alice@jumper1,carol@jumper2 bob@target
用 ~/.ssh/config 配置静态跳转(适合常连多台)
把跳转规则写进配置文件,后续只需 ssh 别名 就能自动走跳板,省去重复输入:
- 编辑或创建
~/.ssh/config:nano ~/.ssh/config - 添加如下内容(注意缩进和大小写):
Host jumphost<br> HostName vps1.example.org<br> User alice<br><br>Host web01<br> HostName web01.internal<br> User bob<br> ProxyJump jumphost
- 保存后,直接运行:
ssh web01,就会自动经jumphost连到web01 - 如跳板机需指定非标端口,在
jumphost段加一行:Port 2222
手动两步登录(备用方案,适合调试)
当免密未配置好或需要临时验证通路时,可分步操作:
- 第一步:先登录跳板机:
ssh alice@vps1.example.org - 第二步:在跳板机上再连目标机:
ssh bob@web01.internal - 注意:这种方式会打开两个 shell 层级,退出时需连续按两次
exit或Ctrl+D - 若想从本地终端直接执行目标机命令(不进入交互 shell),可在跳板机上用
ssh -t:ssh alice@vps1.example.org "ssh -t bob@web01.internal 'df -h'"
前提条件与常见问题
所有跳转方式都依赖基础准备,漏掉任一环节都会失败:
-
免密登录建议配好:跳板机和目标机都应支持密钥登录,否则每跳都要输密码;可用
ssh-keygen生成密钥,ssh-copy-id推送公钥 -
跳板机需开启 GatewayPorts(如需端口转发):默认不开放,若要用
ssh -L做本地端口映射,需确认跳板机/etc/ssh/sshd_config中有AllowTcpForwarding yes -
网络连通性要验证:先确保本地能
ssh到跳板机,再从跳板机ping或ssh到目标机,排除中间链路问题 -
权限别设错:服务器上
~/.ssh目录权限应为700,authorized_keys应为600,否则 SSH 会拒绝读取密钥

















