Linux misc

SSH 登入驗證過程緩慢的問題

最近有同事遇到 SSH 登入過程緩慢的問題, 恰巧我幾年前有研究過此問題 (好奇心旺盛:p), 當時是在 Debian 5 上面 trace, 跟大家分享一下.

問題

進行 SSH 連線時, 如果沒有特別使用 Public key authentication [1], 就必須輸入帳號/ 密碼以進行身份驗證.

但輸入帳號後, 往往會需要等待相當長的時間, 才會顯示輸出密碼的欄位.雖然最終都能順利登入SSH server, 但對於我本人不能接受這些無謂的等待. 於是就來研究 ssh connection.

首先在 ssh 後面加入 -v 的參數, -v 是 verbose mode 的意思, 啟動它能顯示更多詳細資訊, 協助我們瞭解 ssh 的連線過程

Verbose mode. Causes ssh to print debugging messages about its progress. This is helpful in debugging connection, authentica‐
tion, and configuration problems. Multiple -v options increase the verbosity. The maximum is 3.

2016-11-26_185000.png

根據hang 的地方, 搭配 source code 來看, 確認為 DNS lookup problem.

SSH server 會對於 SSH client 進行 DNS 反查的動作, 以確保它沒有假造 hostname. 但機器沒有特別設定 /etc/hosts 的內容, 才會導致查無資料, 需等待 timeout.

而此問題也被紀錄在 SSH FAQ 中 [2].


解法

除了修改 /etc/hosts外, 我們也可以透過修改 sshd_config 來設定不使用此功能.


echo 'UseDNS no' >> /etc/ssh/sshd_config

設定完, 重啟 SSH server 即生效.

我們可以看到 SSH 連線即刻變順 !

2016-11-26_185333.png

生命應該浪費在美好事物上, 小小設定就可以省下這些不必要的等待時間.

ref:

[1]: https://linuxconfig.org/passwordless-ssh

[2]: https://www.complang.tuwien.ac.at/doc/openssh-server/faq.html#3.3

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s