macOS系统更新后SSH连接报错kex_exchange_identification问题求助
macOS更新后SSH连接报错kex_exchange_identification解决方法
从日志可确认TCP连接已成功建立,在SSH密钥交换阶段被服务器主动断开,且服务器无配置改动,可按以下优先级排查mac端问题:
1 验证网络层面拦截
- 切换不同网络环境(比如手机热点替代当前WiFi)重试SSH命令,排除当前局域网路由规则、出口IP被服务器安全组/ban规则拦截的可能
- 执行
telnet xx.xx.x.xx 22验证端口连通性,若无法拿到服务器SSH版本返回,说明流量在传输过程中被拦截
2 修复SSH算法兼容性问题
macOS系统更新后自带的OpenSSH版本会默认禁用老旧不安全的密钥交换、主机密钥算法,可手动添加兼容参数测试:
ssh xxxx@xx.xx.x.xx -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-rsa -Tv
若上述命令可正常连接,说明是算法兼容问题,可在~/.ssh/config文件添加以下规则永久生效:
Host xx.xx.x.xx HostName xx.xx.x.xx User xxxx KexAlgorithms +diffie-hellman-group1-sha1 HostKeyAlgorithms +ssh-rsa
3 排查本地安全工具拦截
- 临时关闭macOS系统防火墙:打开「系统设置」-「网络」-「防火墙」,关闭后重试连接
- 退出所有第三方VPN、代理、安全防护软件,部分工具更新后会主动拦截SSH出站流量
4 修复本地SSH配置&权限
系统更新可能改动本地SSH文件权限或配置,可执行以下操作重置:
# 备份原有SSH配置 cp -r ~/.ssh ~/.ssh_backup # 清理旧的已知主机记录,避免记录冲突 rm ~/.ssh/known_hosts # 修复SSH文件权限,SSH对权限有严格要求,权限过高会拒绝运行 chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa
内容的提问来源于stack exchange,提问作者Roy
相关产品推荐
相关产品推荐

