排查了一上午,MacOS 15 真是巨烂。
这两天折腾内核,旧 X86 的 MacBook Pro 上的 ElementaryOS 虚拟机再次派上用场,之前一直在虚拟机里操作,来回隔空接力倒是也没啥,到底是心急直接 ssh 不是更好嘛,试试才发现,各种超时。
思路:
- 使用
ssh -vvv查看日志,卡在新服务器都会有个 known_hosts 指纹添加的前面,等待返回握手消息。 - 使用
sudo tcpdump -i en0 host x.x.x.x and port 22跟踪消息,发现 MacOS 这边的包是一直在发,而 Linux 那边防火墙没开,sshd 日志毫无反应,明显没收到包。 - 再就架构和软件包版本,ElementaryOS 那边的 OpenSSH_8.9p1 OpenSSL 3.0.2,寻思这不是 Ubuntu 20.X 都一样,两台服务器也是这个版本,x86 和 ARM 设备各一。
- 接着现象,手机 Termux,局域网中的 Linux,其他任意设备可与这台 Mac 通信,也可与那台 ElementaryOS 通信。
从版本,到 ARM 与 x86 的兼容性配置等等一系列排查下来,最终定位:
MacOS 自带的 OpenSSH_9.9p2, LibreSSL 3.3.6 与 Linux 那边的 OpenSSH_8.9p1 , OpenSSL 3.0.2 不兼容。
解决办法(也是尝试过程):
brew install openssh
再次连接则一切正常:
$ /opt/homebrew/bin/ssh user@ip
The authenticity of host 'xxxx' can't be established.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
至此,不更新 MacOS 26, 解决办法就只有使用 Brew 的 OpenSSH 替代,版本为最新 OpenSSH_10.2p1, OpenSSL 3.6.0 。
为了使其替代默认,优先使用,在 .zshrc 环境中添加以下代码即可:
export PATH="/opt/homebrew/bin:$PATH"
以前咋用,现在就咋用,以上。
本站广告由 Google AdSense 提供
0条评论