SSH在bash中正常但zsh/fish终端预认证阶段断开如何解决
SSH连接偶现Unknown error: -536870212问题排查解决
问题现象
- 在bash终端中执行ssh登录远程主机,绝大多数场景下可正常连接,执行命令如下:
ssh -vvvv -p PORT USER@IP
- 少数场景下会触发如下报错:
OpenSSH_7.9p1, LibreSSL 2.7.3 debug1: Reading configuration data /Users/USER/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug2: resolve_canonicalize: hostname IP is address debug2: ssh_connect_direct debug1: Connecting to IP [IP] port PORT. debug1: connect to address IP port PORT: Unknown error: -536870212 ssh: connect to host IP port PORT: Unknown error: -536870212
- 切换到zsh、fish等其他shell时,执行ssh命令几乎每次都会触发该错误,需要将ssh命令放在循环中反复执行才能连接成功
- 已在服务端调高MaxSessions和MaxStartups参数,服务端日志仅显示客户端在预认证阶段断开连接
问题根因
该问题出现在MacOS Mojave系统上,是系统默认预装的OpenSSH版本过旧导致的兼容缺陷,系统自带的ssh版本信息如下:
/usr/bin/ssh -V OpenSSH_7.9p1, LibreSSL 2.7.3
修复方案
通过brew安装新版本OpenSSH即可彻底解决问题:
- 执行安装命令:
brew install openssh
- 验证安装的新版本信息:
/usr/local/bin/ssh -V OpenSSH_8.8p1, OpenSSL 1.1.1l 24 Aug 2021
升级完成后,SSH在bash、zsh、fish等所有shell环境下均可正常连接。
内容的提问来源于stack exchange,提问作者iluvatar
相关产品推荐
相关产品推荐

