一、SSH登錄linux服務器密碼驗證很慢
現象:ssh登錄服務器後,輸入密碼時,驗證要等10秒左右,很慢。登錄上去後速度正常,這種情況主要有兩種可能的原因:
1. DNS反向解析的問題
OpenSSH在用戶登錄的時候會驗證IP,它根據用戶的IP使用反向DNS找到主機名,再使用DNS找到IP地址,最後匹配一下登錄的IP是否合法。如果客戶機的IP沒有域名,或者DNS服務器很慢或不通,那麼登錄就會很花時間。
解決辦法:
在目標服務器上修改sshd服務器端配置,並重啓sshd
vi /etc/ssh/sshd_config,設置UseDNS爲no即可
或者直接執行sed命令
sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
(後續會專門總結一遍關於grep、sed、awk三劍客,以滿足進行文本處理及日誌分析)
配置修改後,執行systemctl restart sshd
,重啓sshd服務即可。
2. 關閉ssh的gssapi認證
用ssh -v user@server 可以看到登錄時有如下信息:
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
注:ssh -vvv user@server 可以看到更細的debug信息
解決辦法:
在客戶端上修改ssh客戶端配置(注意不是sshd_conf)
vi /etc/ssh/ssh_config
,設置GSSAPIAuthentication no 並重啓sshd
可以使用ssh -o GSSAPIAuthentication=no user@server登錄
GSSAPI ( Generic Security Services Application Programming Interface) 是一套類似Kerberos 5 的通用網絡安全系統接口。該接口是對各種不同的客戶端服務器安全機制的封裝,以消除安全接口的不同,降低編程難度。但該接口在目標機器無域名解析時會有問題
使用strace查看後發現,ssh在驗證完key之後,進行authentication gssapi-with-mic,此時先去連接DNS服務器,在這之後會進行其他操作。
二、SSH登錄被拒絕
- 查看是否安裝ssh服務:
rpm -qa |grep openssh-server
apt install openssh-server #Ubuntu系統安裝方式
yum -y install openssh-server #Redhat、CentOS等安裝方式
2.查看是否允許root賬號直接登錄
more /etc/ssh/sshd.config
#PermitRootLogin yes
3.查看SSH服務是否正常、及是否有拒絕訪問的主機
service sshd status
#Apr 26 ****refused connect from 172.0.113.34
#說明拒絕該172.0.113.34訪問
4.清空黑名單列表,並將該IP加入白名單即可解決ssh登錄問題
more /etc/hosts.deny
#清空相應被加入黑名單的ip,並將IP寫入 /etc/hosts.allow,格式如下:
# echo "sshd: 172.0.113.34" >> /etc/hosts.allow
以下是剛剛做實驗碰到的小案例
在連接服務器時,我不斷着輸錯密碼,導致觸發機制,無法SSH訪問
(提示:ssh_exchange_identification: read: Connection reset by peer
)
## -v表示查看連接詳細信息
ssh -v [email protected]
解決辦法:
在服務端更改配置文件
重啓下sshd服務,即可接觸限制,實現SSH訪問
下面的排錯方法是我之前在網上看到後珍藏的,感興趣的小夥伴可以嘗試下。
echo “” > /var/log/secure #清空日誌文件
service rsyslog restart #重置系統日誌計數器
service denyhosts stop #停止服務
/usr/share/denyhosts/data #關於hosts.deny中的IP記錄一併清空
service denyhosts start #啓動服務
vim /etc/hosts.deny #將解禁的IP刪除
/usr/share/denyhosts/daemon-control restart #重啓。 完畢
三、SSH登錄後的超時設置
有些小夥伴是否困惑過,登錄服務器以後,我明明已經敲上TMOUT=0
,爲何過段時間還會自動斷開連接呢?
您可以這樣做:
vi /etc/ssh/sshd_config
ClientAliveInterval 60
ClientAliveCountMax 3
解釋下:
ClientAliveInterval 60,指定了服務器端向客戶端請求消息的時間間隔,默認是0,不發送。而ClientAliveInterval=60表示每分鐘發送一次,然後客戶端響應,這樣就保持長連接了。
ClientAliveCountMax :使用默認值3即可, ClientAliveCountMax表示服務器發出請求後客戶端沒有響應的次數達到一定值,就自動斷開。當然,正常情況下,客戶端不會不響應
四、利用SSH協議實現文件傳輸:SCP
在介紹SSH協議族時,說明SSH不僅可以進行遠程控制,也可以在計算機之間傳送文件。
scp就是secure copy,一個在linux下用來進行遠程拷貝文件的命令。
scp用法舉例:
- 從本地複製到遠端
1.複製文件
命令格式:
scp '本地文件' 遠端用戶名@遠端設備IP:遠端文件夾
#舉例:scp /home/test.txt [email protected]:/home
2.複製文件夾
命令格式:
## -r:遞歸複製整個目錄
scp -r '本地文件夾' 遠端用戶名@遠端設備IP:遠端文件夾
舉個例子吧:
- 從遠端複製到本端
1.複製文件:
從遠程複製到本地,只要將從本地複製到遠程的命令的後2個參數調換順序即可;
命令格式:
scp 遠端主機名@遠端設備IP:/遠端主機文件 /存放在本地的文件夾
#舉例: scp [email protected]:/test/test1.txt /tmp
2.複製文件夾
scp -r 遠端主機名@遠端設備IP:/遠端主機文件夾/ /存放在本地的文件夾
舉例:
更多IT技術,請微信搜索公衆號“秦露露
”或者掃描下方二維碼關注