解決SSH連線伺服器緩慢

2021-09-18 00:26:12 字數 1554 閱讀 4635

最近發現通過ssh連線伺服器非常緩慢,要等上近30秒才能連上,對於追求效率的人而言,這是不能忍的。於是進入分析模式,首先要排查是不是網路的問題:

ping 172.18.50.184 (172.18.50.184) 56(84) bytes of data.

64 bytes from 172.18.50.184: icmp_seq=1 ttl=64 time=0.732 ms

64 bytes from 172.18.50.184: icmp_seq=2 ttl=64 time=1.08 ms

64 bytes from 172.18.50.184: icmp_seq=3 ttl=64 time=0.603 ms

從ping出來的結果來看,網路很正常,沒有丟包的問題。既然不是網路問題,那麼是什麼原因導致connect緩慢呢?

ssh的連線過程是這樣的:

讀取本地的公鑰,包括id_rsa,id_rsa-cert

發起連線伺服器

根據sshd返回的資訊判斷可以通過哪些方式授權認證

逐一嘗試認證,如果無法認證成功則提示失敗

既然網路沒有問題,那麼就是在驗證那裡出來問題,輸入以下指令:

ssh -v [email protected]

發現支援公鑰和gssapi認證

authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic

一般而言我們都不用gssapi認證,所以把它禁用掉吧。

可以通過兩種方式:

ssh -o gssapiauthentication=no [email protected]
或者直接到伺服器的/etc/ssh/sshd_config中設定gssapiauthentication=no,不要忘記重啟sshd服務哦。

但是遺憾的是即使禁用了gssapi認證還是很慢,看來也不是認證的問題,那麼究竟是什麼問題呢???

毫無頭緒的情況下只能使用神器strace ( 詳細使用可以參考: )來定位問題了。

首先在服務端找到sshd的pid

ps -ef | grep sshd
pid是7794

然後輸入

strace -ff -p 7794
然後在客戶端連線,此時服務端上回列印出連線時服務端的全部過程,發現在乙個connect耗了很長時間,而連線的是dns伺服器:172.10.50.2,似乎找到問題所在了,ping 172.10.50.2居然ping不通,說明這個dns服務已經掛了,修改dns伺服器後問題解決。

sudo vim /etc/resolv.conf
如果不想修改dns伺服器,那麼可以直接在sshd上禁用dns查詢:

usedns=no
以上就是解決問題的全過程。

SSH遠端連線伺服器

第一步 伺服器第一次開啟ssh服務,則會自動建立 etc ssh ssh host 公鑰檔案,以及私鑰檔案 第三步 伺服器將自己的公鑰檔案傳送給客戶端 明文 etc init.d ssh restart ssh f o p 帳號 ip 命令 引數 意義 f 不登入,直接在遠端伺服器執行 後面的命令 ...

ssh連線遠端伺服器

平常登陸遠端伺服器,每次都要輸入密碼,感覺挺麻煩的,下面提供一種相對便利的方式 windows 感覺xshell挺好的ubuntu sudo apt install expectmac brew install expect bin bash set timeout 30 spawn ssh l 使...

centos伺服器ssh連線

第一步修改密碼 sudo passwd root生成金鑰對 ssh keygen t rsa找到公鑰的目錄,通常在.ssh下 cat id rsa.pub ssh authorized keys 通過公鑰生成keys檔案,這個檔案每個使用者獨有開啟 sshd config 配置檔案 sudo vi ...