2017
Dec
30

SSH 連線到某些機器,有時候會等超過 5 秒,有一個原因就是 UseDNS 這個設定,當 UseDNS = yes , SSH 伺服器就會做一次 reverse DNS , reverse DNS 就是將 IP 轉成 hostname , SSHD Server 轉換 iphostname 後會檢查 client 的 ip 與 hostname 是否一致 ,唯一的用途是做 hostname-based host authentication 登入機制,不過這個機制一點都不安全,也幾乎沒有機器需要這個功能,所以我們可以直接取消這個設定。

當 SSH Server 沒有做 Reverse DNS , 登入的速度就會快很多了

官方對 UseDNS 的說明如下:

Specifies whether sshd(8) should look up the remote host name and check that the resolved host name for the remote IP address maps back to the very same IP address. The default is ''yes''.

修改 SSH daemon 設定

  • Mac 系統的設定檔: /etc/sshd_config
  • Linux 系統的設定檔: /etc/ssh/sshd_config

你只要在 sshd_config 加上這個設定,在重啟 SSHD server 即可。

UseDNS no

Mac 重啟 SSHD 方式

  • sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist && sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist

Linux 重啟 SSHD 方式有好多種:

  • sudo service sshd restart
  • sudo systemctl restart sshd
  • sudo /etc/init.d/ssh restart

停用 GSSAPIAuthentication

GSSAPIAuthentication 全名是 Generic Security Services API,這個功能平常也是用不到,所以可以直接停用。

/etc/ssh/sshd_config
  1. UseDNS no
  2. GSSAPIAuthentication no

GSSAPIAuthentication 也可以在 Client 端設定不要使用,你可以修改 ~/.ssh/config

~/.ssh/config
  1. GSSAPIAuthentication no
  2. GSSAPIDelegateCredentials yes

回應 (Leave a comment)