ssh 在 bash 上工作,但在我使用 zsh 或其他终端时不起作用,在 preauth 时被杀死

ssh works on bash but does not work when I use zsh or other terminal, killed on preauth

最近我遇到了这个问题,当我尝试从带有 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),我几乎总是会遇到该错误。我实际上必须将 ssh 命令放在 while 循环中,直到它成功。这可能是什么根本原因?我在服务器端增加了 MaxSessions 和 MaxStartups。日志文件只说 te 客户端在预授权时断开连接。可能是某些环境变量正在影响本地 ssh 吗?您知道如何跟踪并修复它吗?谢谢

编辑:感谢@pynexj 的评论,根据https://communities.apple.com/de/thread/251124631,我不得不更新openssh。 Mojave 中的默认版本是

/usr/bin/ssh -V
OpenSSH_7.9p1, LibreSSL 2.7.3

用 brew 安装新版本后问题就解决了

brew install openssh
/usr/local/bin/ssh -V
OpenSSH_8.8p1, OpenSSL 1.1.1l  24 Aug 2021

ssh 连接现在可以在 bash、zsh、fish 等中使用。所以解决方案是通常的:更新它。谢谢

感谢@pynexj,我只需要升级我的 openssh 版本就可以解决这个问题。首先,我

$ /usr/bin/ssh -V
OpenSSH_7.9p1, LibreSSL 2.7.3

然后,运行

之后
brew install openssh

我得到了更新版本

$ /usr/local/bin/ssh -V
OpenSSH_8.8p1, OpenSSL 1.1.1l  24 Aug 2021

并且 ssh 适用于任何 shell