ssh 登錄時常出現的幾種錯誤以及解決方法(Linux)

ssh 登錄時常出現的幾種錯誤以及解決方法(Linux)


參考網址:https://blog.csdn.net/GX_1_11_real/article/details/80423409  
                    
前言
ssh是Linux系統中常用的遠程登陸的命令,有的時候我們通過xshell等遠程連接軟件使用ssh去登陸遠程的服務器的時候,會遇到一些問題。
下面是關於ssh 遠程登陸的問題解決方法的總結。(更新中)


常見報錯及解決

1.SSH連接時出現Connection refused,如下:


報錯如下:
ssh: connect to host 123.123.123.111 port 22: Connection refused
通常是由於22端口未打開、ssh服務未啓動或防火牆禁止22端口等原因引起的

解決方法:

【1】啓動服務,設置防火牆步驟如下:

<1>.進入該服務器(本地登陸)
<2>.查看ssh服務是否啓動
systemctl status sshd
如未啓動
systemctl start sshd
<3>.查看端口是否打開
netstat -lnput |grep :22
如未打開,再次啓動sshd
<4>測試網絡的聯通性
ping www.baidu.com  (ping外網)
如果ping不通,就檢查dns
如果dns無問題,就說明是網絡原因,看服務器的網線是否連接或是否有問題
<5>如果能連接外網,就查看服務器的防火牆規則,並開放ssh服務的22號端口(如防火牆未放行ssh的端口)
iptables -L
[1]直接打開端口:
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
[2]永久打開端口
打開防火牆配置文件:
vim /etc/sysconfig/iptables
在iptables文件內容中追加
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
保存配置文件後,重啓防火牆:
service iptables restart(centos6)
systemctl restart iptables(centos7)


2.SSH連接時出現Host key verification failed


報錯如下:
Host key verification failed
通常是由於訪問使用的公鑰與服務器記錄的差異引起的
ssh服務會把每個曾經訪問過計算機或服務器的公鑰(public key),記錄在~/.ssh/known_hosts
當下次訪問曾經訪問過的計算機或服務器時,ssh就會覈對公鑰,如果和上次記錄的不同,OpenSSH會發出警告。
而ssh對主機的public_key的檢查是有等級的,根據等級執行不同的策略。(StrictHostKeyChecking就是配置等級的參數)
[1]StrictHostKeyChecking=no
最不安全的級別,提示最少,應在相對安全的內網測試時使用。(當連接的服務器的公鑰在本地不存在,就會自動添加到文件(默認是known_hosts)中,並且給出警告。
[2]StrictHostKeyChecking=ask
默認的級別。如果連接的服務器的公鑰和本地的known_hosts文件中不匹配,就給出提示(Host key verification failed),並拒絕登錄。
[3]StrictHostKeyChecking=yes
最安全的級別,如果連接的服務器的公鑰和本地的known_hosts文件中的不匹配,就拒絕連接,不會提示詳細信息。

解決方法 :

【1】可更改安全選擇最低的安全級別。在.ssh/config或/etc/ssh/ssh_config)中配置:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
(將knownhostfile設爲/dev/null),爲了方便使用在known_hosts中了)

【2】刪除對應ip的在known_hosts相關信息
vim /.ssh/known_hosts


【3】直接刪除known_hosts文件
rm known_hosts


3.SSH公私鑰正確的情況下免密登錄失敗


有的時候我們經常會遇到:在服務器上配置ssh公鑰後,一段時間可以免密碼登錄,後來登錄時,每次都提示要輸入密碼。這時我們可以刪除known_hosts,重新把id_rsa.pub添加到服務器~/.ssh/authorized_keys下。 如果這個辦法也不行,我們(首先考慮是權限問題)要查看日誌。
/var/log/auth.log日誌中報錯如下:
coffeeserver sshd[6761]: Authentication refused: bad ownership or modes for directory /root/.ssh
/var/log/secure日誌中報錯如下:
Authentication refused: bad ownership or modes for directory /root/.ssh
這些日誌都告訴了我們/root/.ssh的目錄的權限的配置出現了(權限應爲700)

解決方法:

【1】更改目錄及文件權限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys


4.SSH連接時密碼正確,登陸失敗,出現Permission denied, please try again


報錯如下:
Password authentication failed

Permission denied, please try again
通常是由於/etc/ssh/sshd_config的PasswordAuthentication或PermitRootLogin參數的配置引起的
補充:
還有特殊一種情況,你要連接的這臺服務器的ip地址與你局域網中的某臺電腦的ip地址一致,造成衝突。(這種情況,無論怎麼改都會失敗,會讓你懷疑自己。解決方法只能是一方改IP或關閉其中一方,先解決衝突問題)


解決方法:

遇到的問題:使用root賬戶登錄一直失敗 

解決方法:vim /etc/ssh/sshd_config
將PermitRootLogin前面的#號去掉
將PermitRootLogin設爲yes

 

【1】修改相關配置文件
<1>查看本服務器和電腦的防火牆設置,是否打開ssh服務,22端口(一般都是打開的)
如果服務不是打開的要將服務啓動,防火牆開放22端口(配置規則看本文目錄第1條中)
<2>編輯sshd_config文件
vim /etc/ssh/sshd_config
將PasswordAuthentication前面的#號去掉
將PasswordAuthentication 設爲yes
<3> 重啓sshd服務
/etc/init.d/sshd restart (centos6)
systemctl restart sshd(centos7)

【2】修改相關配置文件
<1>基本上與上一個方法相同,但編輯sshd_config文件的另一個參數
vim /etc/ssh/sshd_config
將PermitRootLogin前面的#號去掉
將PermitRootLogin設爲yes
<2>重啓sshd服務
/etc/init.d/sshd restart (centos6)
systemctl restart sshd(centos7)


5.SSH連接時出現Permission denied, please try againssh_exchange_identification: read: Connection reset by peer


報錯如下:
Permission denied, please try againssh_exchange_identification: read: Connection reset by peer
原因是由於所訪問的服務器啓用了tcp_wrapper,拒絕接受該ip或網段發起訪問的服務,可能是限制了ip或是網段


解決方法:

【1】修改發起訪問端的ip或網段

該方法在無法進入被訪問端服務器時使用,但可用率不高,因爲大多少情況下是對網段進行限制並開放某些IP。
建議聯繫 系統管理員解除限制或放開該IP或網段

<1>查看本機的ip或網段
ip a
<2>修改一個正在使用的網卡的配置文件
例如:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
(重點修改IPADDR,NETMASK,GATEWAY,將其修改爲新網段的IP)
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.10.10.10
NETMASK=255.255.254.0
GATEWAY=10.10.10.254
DNS1=.8.8.8.8
<3> 重啓網卡
service network restart(centos6)
systemctl restart network(centos7)

【2】進入被訪問端解除限制或放開IP
<1>進入/etc/hosts.allow中進行修改
(123.123.123.123此處代表發起訪問端的IP)
vim /etc/hosts.allow
追加
sshd:123.123.123.123:allow
或僅註釋一行
#sshd:123.123.123.123:deny
或註釋所有規則,並添加
sshd:all:allow
更多的設置方法如下:
https://blog.csdn.net/GX_1_11_real/article/details/89452719


6.連接服務器時,提示要輸入密碼,成功推送過公鑰到服務器後,再次連接仍提示要輸入密碼


解決方法如下:
https://blog.csdn.net/GX_1_11_real/article/details/101520070
 

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