今天早上醒来,发现Mac自动安装了最新版的macOS,也就是Catalina 10.15.4。上午用着挺好,没什么异常。下午登录服务器,发现无法连接。用”-v”选项查看ssh连接调试信息,到”connecting”就不动了:
OpenSSH_8.1p1, LibreSSL 2.7.3 debug1: Reading configuration data /Users/tlanyan/.ssh/config
debug1: /Users/tlanyan/.ssh/config line 20: Applying options for node1
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 47: Applying options for * debug1: Connecting to node1 port 12345
上网查了一下,几天前就有人遇到这个问题。本人升级新系统较晚,因此今日才发现。
经过本人组合测验,终于找到问题原因所在,本文给出macOS 10.15.4 ssh无法连接解决办法。
ssh无法连接解决办法
遇到同样问题又不想看废话的网友,请打开终端安装 openssh 以解决该问题:
未安装brew请先安装:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew install openssh
安装完后,打开一个新窗口,ssh -V
应该输出如下:
OpenSSH_8.2p1, OpenSSL 1.1.1f 31 Mar 2020
再用ssh连接服务器,问题已经解决。
解决历程
刚发现ssh无法连接到服务器,心里一凉:服务器上托管着网站,不会服务器挂了吧?转念一想觉得不可能,网站有监控呢,挂了肯定会报警。浏览器打开网站,一切正常。但是返回iTerm2用ssh连接服务器,还是不通。尝试其他几个服务器,情况一样。
想着会不会是设置了代理的问题?关掉代理软件,果然ssh正常连接到服务器。但不用代理软件是不可能的,为了找出原因并解决,陆续做了如下尝试:
- 分别用iTerm2和系统自带终端,都不能连接,说明不是iTerm2的问题;
- 查看环境变量,确认没有设置http_proxy等影响工作的环境变量;
- 切换zsh和bash,问题依旧,说明和shell没关系;
- 切换代理软件PAC和全局模式,全局模式能正常连接,说明PAC的某个设置影响了ssh的正常工作;
- PAC模式下用curl、wget、telnet等软件,工作正常,只有ssh工作异常;
- 把主机名换成ip,能正常连接到服务器;
- 把主机名换成域名,无法连接。
以上种种情况说明,升级到macOS 10.15.4后,ssh确实受到了影响,无法连接到主机别名、域名的服务器,ip方式则不受影响。
ssh是系统内置软件,ssh -V
查看版本信息:
OpenSSH_8.1p1, LibreSSL 2.7.3
想着用brew安装openssh会不会好点呢?于是果断 brew install openssh
,安装完后打开新终端,问题解决!
总结
升级到macOS 10.15.4后,如下两种情况的ssh使用不会受到影响:
- 用ip连接服务器的;
- 之前就已经用openssh客户端的。
如果你用着系统内置的ssh,并像我一样喜欢用别名或者域名连接服务器,安装openssh是问题的终极解决办法。当然,如果不嫌麻烦,连接的时候关闭代理也是出路。