抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年
人们总是混淆了欲望和理想

关于 MacOS 自带 OpenSSH 兼容性问题

排查了一上午,MacOS 15 真是巨烂。

这两天折腾内核,旧 X86 的 MacBook Pro 上的 ElementaryOS 虚拟机再次派上用场,之前一直在虚拟机里操作,来回隔空接力倒是也没啥,到底是心急直接 ssh 不是更好嘛,试试才发现,各种超时。

思路:

  1. 使用 ssh -vvv 查看日志,卡在新服务器都会有个 known_hosts 指纹添加的前面,等待返回握手消息。
  2. 使用 sudo tcpdump -i en0 host x.x.x.x and port 22 跟踪消息,发现 MacOS 这边的包是一直在发,而 Linux 那边防火墙没开,sshd 日志毫无反应,明显没收到包。
  3. 再就架构和软件包版本,ElementaryOS 那边的 OpenSSH_8.9p1 OpenSSL 3.0.2,寻思这不是 Ubuntu 20.X 都一样,两台服务器也是这个版本,x86 和 ARM 设备各一。
  4. 接着现象,手机 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条评论

发表评论

在 TA 离去的那一刻

“仍在努力工作”