SSH 密鑰非常慢
從我的機器上用密鑰連接的 SSH 突然變得非常慢(約 10 秒!)。據我所知,這不是伺服器或 DNS 問題。
在我的Ubuntu 15.04 x86_64
apt-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