升级MacOS Ventura13.0.1后ProxyJump SSH报错求助
问题原因及解决方法
核心原因
MacOS Ventura升级后自带的OpenSSH版本(OpenSSH_9.0p1)对RSA密钥的处理做了严格限制,而ProxyJump和手动跳转的SSH连接逻辑存在差异:
1. 算法协商范围不同
- 用ProxyJump时,是本地SSH客户端直接和第二台机器进行全流程算法协商,包括主机密钥验证和用户身份验证两个环节。你添加的
HostKeyAlgorithms +ssh-rsa只解决了主机密钥不匹配的问题,但OpenSSH 9.0+默认禁用了ssh-rsa作为用户身份验证算法,导致本地RSA密钥无法被第二台机器识别,只能 fallback到密码登录。 - 手动跳转时,是通过第一台机器的SSH客户端连接第二台,第一台机器的OpenSSH版本大概率较低,仍支持
ssh-rsa作为身份验证算法,所以能正常用密钥登录,无需输入密码。
2. 密钥转发逻辑差异
手动跳转时,你可能开启了密钥代理转发(ForwardAgent yes),或者第一台机器上存储了能访问第二台机器的密钥,所以不需要额外输入密码。但ProxyJump是本地直连第二台机器,依赖本地密钥和算法匹配,这就暴露了算法不兼容的问题。
解决方法
方法一:完善SSH配置,同时允许主机密钥和身份验证算法使用ssh-rsa
修改你的~/.ssh/config,给second-machine添加身份验证算法配置:
Host second-machine User my_username ProxyJump first_machine HostKeyAlgorithms +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa
添加PubkeyAcceptedAlgorithms +ssh-rsa后,本地SSH客户端会主动用ssh-rsa作为身份验证算法,匹配第二台机器的配置,就能正常使用密钥登录,无需重复输入密码短语。
方法二:确保密钥已加入ssh-agent
如果你的密钥设置了密码短语,可将其加入ssh-agent,避免每次输入:
- 检查当前ssh-agent中的密钥:
ssh-add -l - 如果看不到你的RSA密钥,执行:
ssh-add ~/.ssh/你的密钥文件名(比如ssh-add ~/.ssh/id_rsa)
内容的提问来源于stack exchange,提问作者Maz
相关产品推荐
相关产品推荐

