Ubuntu

SSH 密鑰非常慢

  • May 17, 2015

從我的機器上用密鑰連接的 SSH 突然變得非常慢(約 10 秒!)。據我所知,這不是伺服器或 DNS 問題。

在我的Ubuntu 15.04 x86_64apt-get install kubuntu-desktop上進行了一些與 KDE 相關的簡單和小問題之後,問題突然出現了。

執行ssh -vv ...顯示它在最後一行等待了很長時間(大部分時間約為 10 秒……):

OpenSSH_6.7p1 Ubuntu-5ubuntu1, OpenSSL 1.0.1f 6 Jan 2014 debug1: Reading configuration data /home/neuronq/.ssh/config debug1: /home/neuronq/.ssh/config line 1: Applying options for XXX.com debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for *

…並且我的/etc/ssh/ssh_config包含這個(我沒有粘貼註釋掉的行):

Host *
   SendEnv LANG LC_*
   HashKnownHosts yes
   GSSAPIAuthentication no
   GSSAPIDelegateCredentials no

Kubuntu 桌面安裝是否會突然導致這種減速(一些密鑰庫/錢包奇怪的事情)?(此外,在 KDE 中,我根本無法通過密鑰登錄 ssh 以工作,除非在終端中通過ssh-add事先手動執行並輸入我的密鑰密碼,但我已經完全放棄了 KDE,我又回到了Unity,所以我不再關心這個……但它可能是相關的)

對我來說,實際的解決方案是AddressFamily inet在我的本地主機上添加~/.ssh/config適當的主機或/etc/ssh/ssh_config.Host *

問題的原因很可能是最近升級到 Ubuntu 15.05 並且 ssh 現在正在嘗試(但失敗,有很大的延遲……)使用 IPv6。

是不是密碼認證也有同樣的困擾,還是真的和密鑰認證有關?

您的客戶端可能會提供正確的 DNS 解析,但無論如何,您的伺服器會嘗試從您的 IP 地址執行反向查找;正如@kasperd 所說,這可以解釋延遲。但根據經驗,這不會超過幾秒鐘。

SSH最終認證成功了嗎?如果是這樣,它確實看起來像一個 DNS 問題。如果您的配置/管理員允許,請嘗試將您的 IP/主機名添加到伺服器的 /etc/hosts 中。這將繞過伺服器端的 DNS 解析。如果您不將 DNS 配置為在伺服器端為客戶端提供正確的反向查找useDNS no,正如@kasperd 所說,將放在/etc/ssh/sshd_config伺服器端。

如果您的管理員不這樣做,您將無能為力。

編輯:KDE/Unity 或任何桌面管理器絕對不會導致這種減速。我會驚訝地發現這種情況。但是,您需要提供ssh-add才能使用您的密鑰的事實很有趣。此命令用於使您的身份驗證代理記住您為密鑰提供的密碼。要指定要使用的密鑰,請通過命令行或在您的~/.ssh/config文件中執行:

# in your command line:
ssh -i /path/to/your/private/key user@host

# or in your /home/$user/.ssh/config file:
# (on command line later, simply use ssh user@host or ssh host if
# user locally and remotely are the same
Host $myhost
   IdentityFile /path/to/your/private/key
   IdentitiesOnly yes 

引用自:https://serverfault.com/questions/692449