bash - 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 等中使用。所以解决方案是通常的:更新它。谢谢
解决方案
感谢@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 上运行
推荐阅读
- heroku - 页面出现 500 错误,但 heroku 日志显示 200
- laravel - Apache - 选项指令禁止服务器生成的目录索引
- python - 导入函数/类时,类成员会丢失
- apache - 如何让 apache 服务器访问已安装的文件夹?
- c - 有没有更好的方法来一次退出所有递归函数,而不是一个一个地退出?
- ionic-framework - *ng 中的 ionic-selectable 不更新当前行字段值,否则最后一行项目值
- typescript - 2021 年为 npm 浏览器库和 TypeScript 配置 babel 的最佳方式?
- node.js - 我无法在 Windows10 上使用 node-v14.16.0-x64 环境和 VSCodeUserSetup-x64-1.54.3 安装 EnMap
- php - 如何在 Codeigniter 4 中将数据插入到 2 个表中
- python - ValueError:无法将字符串转换为浮点数:Python 3D 图中的“2019-01-01 00:00:00”