重新安裝機器的情況下我們經常會遇到的一個情況是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使配置生效
本文轉自 妙曼 51CTO部落格,原文連結:http://blog.51cto.com/yanruohan/1596337,如需轉載請自行聯系原作者