今天突然发现自己的 Mac 登录不上一台服务器,而用另一台服务器却可以正常登录,区别就是 openssh 的版本不一样。
发现登录不上的第一反应是怀疑自己的公钥被人从服务器上删除了,但这种可能性应该比较小,
所以带着怀疑,我尝试在另一台电脑上进行登录服务器,居然成功,两边的私钥也是一样的,ssh_config 也是一样的,这就让我头疼了。
下面是使用 -vvv
参数进行登录时的输出内容:
说实话,啥也没看出来,但是发现了两台电脑的 OpenSSH 版本不一样:
m1(登录失败):
m2(登录成功):
一开始我还不相信是自己电脑的问题,然后检查了下服务器的 OpenSSH 版本,发现居然是 6.6.1, 果断认为是因为服务器的 OpenSSH 的版本太低导致的:
因此,我决定把服务器上的 OpenSSH 给升级到了 8.6,服务器系统是 CentOS 7,升级步骤:
curl -LO https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssh-8.6p1.tar.gz
tar zxf openssh-8.6p1.tar.gz
cd openssh-8.6p1
./configure
make && make install
OpenSSH Portable Release: https://www.openssh.com/portable.html#downloads
升级好了🧑🏻💻:
但再次尝试登录还是不行🥲,看来还是要把 Mac 上的 OpenSSH 降低版本:
# 卸载 openssh
brew uninstall openssh
# 安装低版本的 openssh 8.6
brew extract --version=8.6p1 openssh homebrew/cask
brew install [email protected]
refer: https://stackoverflow.com/questions/3987683/homebrew-install-specific-version-of-formula
终于可以登录了: