ssh 連接緩慢解決方法

原地址 http://blog.chinaunix.net/uid-26719405-id-3435293.html


重新安裝機器的情況下我們經常會遇到的一個情況是telnet到server速度很快,但是ssh連接的時候卻很慢,大概

要等半分鐘甚至更久。ping的速度也非常好,讓人誤以爲是ssh連接不上。

 

  下面說下如何解決這樣的問題,最爲常見的原因是因爲server的sshd會去DNS查找訪問

client IP的hostname,如果DNS不可用或者沒有相關記錄,就會耗費大量時間。

 

  1、在server上/etc/hosts文件中把你本機的ip和hostname加入

 

  2、在server上/etc/ssh/sshd_config文件中修改或加入UseDNS=no,另外在authentication gssapi-with-mic也有可能出現問題,在server上/etc/ssh/sshd_config文件中修改GSSAPIAuthentication no.

3、修改server上/etc/nsswitch.conf中hosts爲hosts: files

 

  4、reboot server使配置生效

 

 /etc/init.d/sshd restart重啓sshd進程使配置生效。

 

  

項目組的服務器,通過SSH服務遠程訪問Linux服務器,總是等待很久才能登陸。

試過下面的方法,再通過SSH服務遠程訪問Linux服務器,瞬間登陸。。。甚是開心。。。

vi /etc/ssh/sshd_config

關閉 SSH 的 DNS 反解析,添加下面一行:

UseDNS no

※雖然配置文件中[UseDNS yes]被註釋點,

但默認開關就是yes...(SSH服務默認啓用了DNS反向解析的功能)

#############################################################

上網查了相關的資料:↓

在目標服務器上有一個文件/etc/nsswitch.conf ,裏面有如下一行

hosts: files dns

這行的含義是對於訪問的主機進行域名解析的順序,是先訪問file,也就是/etc/hosts文件,如果hosts中沒有記錄域名,則訪問dns,進行域名解析,如果dns也無法訪問,就會等待訪問超時後返回,因此等待時間比較長。那如果將這一行屏蔽掉是不是也可以達到同樣的效果呢?應該是可以的,但是如果本機要通過域名訪問其他服務器,則肯定無法訪問,因此這行應該需要保留。這個問題也提示我們,dns如果不可用,會帶來的一些副作用的。

相信很多朋友在使用Linux系統的時候因爲安全性的原因摒棄了telnet rlogin 或者X-window,而把openssh作爲自己默認的遠程登錄方式。然而經常會遇到的一個情況是telnet到server速度很快,但是ssh連接的時候卻很慢,大概要等半分鐘甚至更久。ping的速度也非常好,讓人誤以爲是ssh連接不上。下面說下如何解決這樣的問題,最爲常見的原因是因爲server的sshd會去DNS查找訪問clientIP的hostname,如果DNS不可用或者沒有相關記錄,就會耗費大量時間。

1, 在server上/etc/hosts文件中把你本機的ip和hostname加入

2, 在server上/etc/ssh/sshd_config文件中修改或加入UseDNS=no(這個方法試過了,好用)

3, 註釋掉server上/etc/resolv.conf中所有行(關於這個方法:另一臺服務器雖然沒有按照方法2修改配置文件sshd_config,但是在這臺服務器resolv.conf爲空,也就是說這個方法也好用) 

4, 修改server上/etc/nsswitch.conf中hosts爲hosts: files

5, reboot server使配置生效

#############################################################


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章