題 為什麼我的SSH登錄速度慢?


我看到SSH登錄時出現延遲。具體來說,有2個點,我看到從瞬時延遲到多秒延遲的範圍。

  1. 在發出ssh命令和獲取登錄提示之間
  2. 在輸入密碼和加載shell之間

現在,具體來說我只在這裡查看ssh細節。顯然,網絡延遲,所涉及的硬件和操作系統的速度,複雜的登錄腳本等都可能導致延遲。對於上下文,我使用大多數Linux發行版和一些主機使用Ubuntu,CentOS和MacOS X作為我的客戶端系統。幾乎所有時間,ssh服務器配置與操作系統的默認設置相同。

我應該對哪些ssh服務器配置感興趣?是否有可以調整的OS /內核參數?登錄shell技巧?等等?


86
2017-07-22 07:02


起源


你在使用本地賬戶嗎? - 有時我發現pam身份驗證可能會增加使用ssh登錄的延遲 - Sirex
通常是本地帳戶。有時NIS。 - Peter Lyons


答案:


嘗試設置 UseDNS 至 no 在 /etc/sshd_config 要么 /etc/ssh/sshd_config


109
2017-07-22 08:38



+1是登錄ssh時最常見的延遲原因 - matthias krull
“Solaris 11注意:我在Solaris 11上嘗試過UseDNS no設置並且它破壞了服務啟動。服務不完全友好響應.YMMV與其他* Nix變體但似乎UseDNS no可能不是Solaris 11中的有效選項“。 - 評論 基思霍夫曼 - Sathya♦
當我使用IP地址(家庭局域網)登錄時,我持懷疑態度,但這個解決方案解決了我的問題。出於谷歌的考慮,雖然它剛剛發生,但延遲與“密鑰:/home/mylogin/.ssh/id_ecdsa((nil))”消息無關(運行時) ssh -vvv)。 - Skippy le Grand Gourou
+1使其明確,文件 /etc/ssh/sshd_config !我加入了 /etc/sshd_config 並沒有看到任何差異! - vyom
@SkippyleGrandGourou:一些Solaris版本使用了一個名為SunSSH的修改過的OpenSSH,它有一些煩人的不兼容性。 Solaris 11.3增加了OpenSSH,最終將刪除SunSSH ...... - Gert van den Berg


當我跑 ssh -vvv 在性能類似的服務器上,我看到了一個問題:

debug1: Next authentication method: gssapi-with-mic

通過編輯 /etc/ssh/ssh_config 並評論出該身份驗證方法後,我的登錄性能恢復正常。這就是我的 /etc/ssh/ssh_config 在服務器上:

GSSAPIAuthentication no

您可以在服務器上全局設置它,因此它不接受GSSAPI進行身份驗證。只需添加 GSSAPIAuthentication no 至 /etc/ssh/sshd_config 在服務器上並重新啟動服務。


34
2017-09-22 17:42



一旦配置了winbind / ad登錄,我就發現這是RHEL5服務器的情況。 - Chad
為我工作謝謝+1。 - racic
這適用於Ubuntu 14.04服務器。 - Penghe Geng
對於CentOS 7,需要同時設置 GSSAPIAuthentication no 和 UseDNS no 在 /etc/ssh/sshd_config 文件。 - Sunry


對我來說,罪魁禍首是IPv6分辨率,它是超時的。 (我猜我的主機提供商的DNS設置不好。)我通過這樣做發現了這一點 ssh -v,這表明哪一步掛了。

解決方案是 ssh 隨著 -4 選項:

ssh -4 me@myserver.com


14
2017-08-14 00:50



我懷疑隨著時間的推移,我們會越來越多地看到這一點,並且(嚴重而且)慢慢地適應IPV6。謝謝! - sage
...如果沒有確認這是問題的調試消息,這個答案特別無益。 - E.P.
根據我的經驗,當SSH正在偵聽雙棧接口時,這是一個非常常見的問題,我在登錄時首先要檢查,但它需要的時間比預期的要長。 - Mogget
我們有沒有機會修復IPv6而不是默認為IPv4? - msrd0


使用systemd,登錄可能會在升級後與logind掛起dbus通信,然後您需要重新啟動logind

systemctl restart systemd-logind

在debian 8,arch linx和suse列表上看到了這一點


11
2018-05-21 09:41



哦哇,現在那是罪魁禍首!謝謝你! - mahatmanich
我也是。花一點時間先排除所有可能的DNS和SSH問題。注意:如果問題也適用於慢速sudo,請先嘗試此操作。 - Michael


你總是可以開始 ssh 隨著 -v 顯示當前正在執行的操作的選項。

$ ssh -v you@host

根據您提供的信息,我只能建議一些客戶端配置:

  • 由於您寫的是手動輸入密碼,我建議您盡可能使用公鑰驗證。這將您視為速度瓶頸。

  • 您也可以禁用X-forwarding -x 和身份驗證轉發 -a (默認情況下可能已禁用這些功能)。如果您的客戶端需要啟動X-server,特別是禁用X-forwarding可以大大提高速度 ssh 命令(例如在OS X下)。

其他一切都取決於您在何時何地經歷的延遲。


9
2017-07-22 08:28



關於冗長的好暗示,你也可以通過增加v來增加它。最多3個IIRC。 - vtest


關於2.點,這裡是一個答案,不需要修改服務器也不需要具有root /管理權限。

您需要編輯“user ssh_config”文件,該文件是:

vi $HOME/.ssh/config

(注意:如果不存在,則必須創建$ HOME / .ssh目錄)

並添加:

Host *
  GSSAPIAuthentication no
  GSSAPIDelegateCredentials yes

如果需要,您可以在每個主機的基礎上執行此操作:)示例:

Host linux-srv
  HostName 192.158.1.1
  GSSAPIAuthentication no
  GSSAPIDelegateCredentials yes

確保IP地址與您的服務器IP匹配。一個很酷的優點是,現在ssh將為此服務器提供自動完成功能。所以你可以輸入 ssh lin+ Tab 它應該自動完成 ssh linux-srv


7
2018-06-29 07:41





校驗 /etc/resolv.conf 在服務器上,以確保此文件中列出的DNS服務器正常工作,並刪除任何不工作的DNS。

有時它非常有幫助。


4
2018-06-08 07:57





除了已經提到的DNS問題,如果您正在使用許多NFS掛載進入服務器,那麼密碼和提示之間可能會有延遲,因為 quota 命令檢查未安裝的所有文件系統上的使用/配額 noquota。在Solaris系統上,您可以在默認情況下看到此信息 /etc/profile 並通過運行跳過它 touch $HOME/.hushlogin  。


2
2017-07-22 14:24