如何調試SSH連接

本文將介紹一些可用於診斷SSH連接的快速方法和技術,包括何時無法連接SSH,身份驗證錯誤等。
問題一:SSH服務沒有運行

SSH連接錯誤的常見原因是服務未在遠程服務器上運行。這可能是由於服務意外關閉或系統重新啓動後服務未啓動而引起的。

要檢查SSH服務是否正在運行,請運行下面命令

[root@server1 ~]# systemctl status sshd

如何調試SSH連接如何調試SSH連接

解決方法

使用以下命令設置SSH服務開機啓動,並啓動服務:

[root@server1 ~]# systemctl enable sshd
[root@server1 ~]# systemctl start sshd
問題二:非標準端口上的SSH

調試SSH連接時的第二個常見問題是使用非標準端口。如果SSH在默認端口22以外的其他端口上運行,則除非明確指定運行SSH的端口,否則將不能連接到遠程主機。

要查看運行SSH的端口,請使用netstat之類的工具,如下所示:

[root@clean-idea-1 ~]# netstat -tlunp|grep sshd
tcp        0      0 0.0.0.0:28159           0.0.0.0:*               LISTEN      818/sshd            
tcp6       0      0 :::28159                :::*                    LISTEN      818/sshd

如何調試SSH連接如何調試SSH連接
上面的輸出顯示了SSH服務在哪個端口上運行。在這種情況下,它是端口28159。

解決方法

端口不是默認的22時,連接就需要指定端口了:

[root@server1 ~]# ssh [email protected] -p 28159
問題三:端口被佔用

SSH連接錯誤的另一個原因是其他服務或進程是否也使用與SSH服務相同的端口。例如,SSH的端口號爲80,這和http服務的端口衝突了,則類似Apache的服務可能正在使用相同的端口。

要查看其他進程是否正在使用與SSH相同的端口,請使用以下命令檢查日誌:

[root@server1 ~]# journalctl -t sshd

該命令應返回如下所示的錯誤,顯示端口已被佔用。
如何調試SSH連接如何調試SSH連接

解決方法

在這可以修改ssh的端口號,打開配置文件將端口修改爲其他的,Port 2222

vim /etc/ssh/sshd_config 

Port 2222

如何調試SSH連接如何調試SSH連接

問題四:被防火牆阻止

如果嘗試了上述所有方法,仍無法建立SSH連接,則可以看看防火牆是否阻止連接?

解決方法

在Cetnos8中,使用fireawlld查看防火牆,並將端口添加允許裏面:

[root@server1 ~]# firewall-cmd --list-all
[root@server1 ~]# firewall-cmd --permanent --add-port=2222/tcp
success
[root@server1 ~]# firewall-cmd --reload
success

如何調試SSH連接如何調試SSH連接

問題五:已禁用密碼登錄

有時,您可以將SSH配置爲不接受密碼登錄,而僅使用公密鑰身份驗證。如果公鑰在服務器上不可用或缺少私鑰對,則可能導致不能登錄的問題。

解決方法

要檢查/etc/ssh/sshd_config配置文件是否允許密碼登錄,請將ssh配置設置爲如下:

[root@server1 ~]# grep PasswordAuthentication /etc/ssh/sshd_config 
#PasswordAuthentication yes
PasswordAuthentication yes
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication, then enable this but set PasswordAuthentication

上面的輸出顯示允許密碼登錄。

總結

本文討論了SSH連接錯誤的主要原因以及如何解決它們。

本文原創地址:https://www.linuxprobe.com/debug-ssh-connections.html

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