macOS 10.15.4 ssh沒法鏈接解決辦法

原文: macOS 10.15.4 ssh沒法鏈接解決辦法

今天早上醒來,發現Mac自動安裝了最新版的macOS,也就是Catalina 10.15.4。上午用着挺好,沒什麼異常。下午登陸服務器,發現沒法鏈接。用"-v"選項查看ssh鏈接調試信息,到"connecting"就不動了:node

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

上網查了一下,幾天前就有人遇到這個問題。本人升級新系統較晚,所以今日才發現。git

通過本人組合測驗,終於找到問題緣由所在,本文給出macOS 10.15.4 ssh沒法鏈接解決辦法。github

ssh沒法鏈接解決辦法

遇到一樣問題又不想看廢話的網友,請打開終端安裝 openssh 以解決該問題:shell

# 未安裝brew請先安裝:
# bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew install openssh

安裝完後,打開一個新窗口,ssh -V 應該輸出以下:macos

OpenSSH_8.2p1, OpenSSL 1.1.1f 31 Mar 2020

再用ssh鏈接服務器,會發現問題已經解決。瀏覽器

解決歷程

剛發現ssh沒法鏈接到服務器,內心一涼:服務器上託管着網站,不會服務器掛了吧?轉念一想以爲不可能,網站有監控呢,掛了確定會報警。瀏覽器打開網站,一切正常。可是返回iTerm2用ssh鏈接服務器,仍是不通。嘗試其餘幾個服務器,狀況同樣。bash

想着會不會是設置了代理的問題?關掉代理軟件,果真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是系統內置軟件,ssh -V 查看版本信息:curl

OpenSSH_8.1p1, LibreSSL 2.7.3

想着用brew安裝openssh會不會好點呢?因而果斷 brew install openssh,安裝完後打開新終端,問題解決!

總結

升級到macOS 10.15.4後,以下兩種狀況的ssh使用不會受到影響:

  1. 用ip鏈接服務器的;
  2. 以前就已經用openssh客戶端的。

若是你用着系統內置的ssh,並像我同樣喜歡用別名或者域名鏈接服務器,安裝openssh是問題的終極解決辦法。固然,若是不嫌麻煩,鏈接的時候關閉代理也是出路。

參考

1. So, uh, I think Catalina 10.15.4 Broke SSH?

相關文章
相關標籤/搜索