ubuntu SSH登陸緩慢問題解決


如果在Ubuntu 中 ssh 登錄非常緩慢,輸入用戶名后要等好一陣先出現提示輸入密碼, 這是Ubuntu默認開啟了 SSH 的 DNS反解析造成的原因,只要將此選項關閉, 重新啟動sshd后反應非常快。vi /etc/ssh/sshd_config

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

UseDNS no

重啟sshd

#/etc/init.d/sshd restart
systemctl restart sshd

UseDNS選項打開狀態下,當客戶端試圖登錄OpenSSH服務器時,服務器端先根據客戶端的IP地址進行DNS PTR反向查詢,查詢出客戶端的host name,然后根據查詢出的客戶端host name進行DNS 正向A記錄查詢,驗證與其原始IP地址是否一致,這是防止客戶端欺騙的一種手段,但一般我們的IP是動態的,不會有PTR記錄的,打開這個選項不過是在白白浪費時間而已。

※雖然配置文件中[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使配置生效


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM