首页 > 解决方案 > ssh 在 bash 上工作,但在我使用 zsh 或其他终端时不起作用,在 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 客户端在 preauth 上断开连接。可能是某些环境变量正在影响本地 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 等中使用。所以解决方案是通常的:更新它。谢谢

标签: bashsshzsh

解决方案


感谢@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 上运行


推荐阅读