如何修復SSH連線被拒絕錯誤?
引言
SSH是一種加密網路協議,廣泛用於安全資料通訊、遠端shell服務或命令列介面訪問計算機。SSH取代了較舊且安全性較低的telnet協議,成為遠端shell訪問的首選方法。
SSH為在不安全網路(如網際網路)上進行通訊期間的資料機密性、完整性和真實性提供強大的加密和身份驗證功能。SSH已成為系統管理員、開發人員、網路工程師和需要遠端安全管理或訪問計算資源的愛好者的必備工具。
令人恐懼的SSH連線被拒絕錯誤
嘗試與遠端計算機建立SSH連線時,經常會遇到錯誤。“連線被拒絕”是最令人沮喪的錯誤之一,當您的客戶端由於各種原因無法與伺服器連線時,就會發生這種情況。
錯誤訊息表明您的客戶端能夠與伺服器通訊,但無法在指定的埠(通常為22)上建立連線。“連線被拒絕”錯誤可能表示客戶端軟體配置存在問題,或者伺服器端存在問題,例如防火牆設定阻止傳入流量或登入憑據不正確。
SSH連線被拒絕錯誤的常見原因
防火牆設定阻止連線
遇到“SSH連線被拒絕”錯誤的最常見原因之一是防火牆設定。防火牆旨在根據特定規則阻止或允許傳入和傳出的網路流量。如果防火牆配置不當,它可能會阻止傳入的SSH連線,從而導致“連線被拒絕”錯誤訊息。
要檢查防火牆是否導致此錯誤,您必須確保它允許透過埠22(SSH的預設埠)進行傳入連線。此外,可能需要在防火牆配置設定中新增例外,以允許來自特定IP地址的SSH連線。
登入憑據或許可權不正確
此錯誤訊息的另一個常見原因是登入憑據不正確或伺服器上的許可權不正確。如果在身份驗證檢查期間提供了不正確的使用者名稱或密碼,伺服器可能會拒絕訪問。此外,如果遠端伺服器帳戶上的使用者許可權配置不正確,則您在嘗試透過SSH連線時可能會遇到問題。
伺服器上未執行SSH服務
您可以透過登入遠端系統並在終端視窗中鍵入“systemctl status sshd”命令來檢查sshd是否正在執行。如果狀態顯示為inactive (dead),則使用“systemctl start sshd”命令啟動程序;否則,需要進一步排查其他問題。
systemctl status sshd
檢查防火牆設定
SSH連線被拒絕錯誤的最常見原因之一是防火牆阻止連線。要解決此問題,您應首先檢查您的本地計算機和您嘗試連線到的伺服器上是否啟用了任何防火牆。
如果啟用了防火牆,則它很可能正在阻止傳入連線並導致SSH連線被拒絕錯誤。如果沒有防火牆或防火牆已停用,則應驗證埠22(SSH的預設埠)是否開啟。
如果它已關閉,則會阻止建立傳入連線。您可以使用埠掃描工具(例如nmap)來檢查埠22是開啟還是關閉。
驗證登入憑據和許可權
如果防火牆設定沒有問題,但您仍然無法建立SSH連線,則可能是由於登入憑據或許可權不正確。首先,透過準確地將它們重新輸入到兩個欄位中來仔細檢查您的使用者名稱和密碼詳細資訊是否正確。
還值得驗證您的帳戶是否有權訪問該機器上的ssh。您可能還需要在連線的兩端具有管理員許可權——如果不確定許可權是否已正確授予,請聯絡管理任一端的人員。
重新啟動SSH服務
另一個故障排除步驟是重新啟動您的SSH服務。這可以幫助解決可能阻止服務正確執行的任何問題。
執行此操作的過程可能因您的作業系統而異,但通常涉及停止和啟動伺服器上的服務。您通常可以使用命令列工具(例如systemctl或service)來執行此操作。
重新啟動後,檢查服務狀態和日誌中是否存在可能最初導致問題的任何錯誤。這些日誌通常可以提供其他診斷資訊,可以幫助查明連線問題。
高階故障排除技術
使用備用埠進行SSH連線
雖然SSH服務通常在埠22上執行,但可以將其預設埠更改為不同的數字。這在埠22被防火牆或其他網路限制阻止的情況下非常有用。但是,更改埠需要更新伺服器和客戶端兩端的配置檔案。
要更改預設埠,您必須首先訪問位於`/etc/ssh/sshd_config`的伺服器配置檔案。在此檔案中,找到並使用所需的數字更新`Port`行。
儲存後,使用`sudo systemctl restart sshd.service`(對於基於Linux的系統)或`sudo service sshd restart`(對於macOS系統)重新啟動SSH服務。在對伺服器端配置檔案進行這些更改後,更新客戶端端配置以反映這些更改。
sudo systemctl restart sshd.service sudo service sshd restart
需要注意的是,使用非標準埠可以透過模糊安全性提供一定程度的安全性,但切勿將其依賴為唯一的安全方法。如果未以其他方式正確保護,攻擊者仍然可以掃描開放埠,並最終找到您的備用SSH埠。
為身份驗證目的生成新的金鑰
連線到SSH伺服器時,SSH金鑰用於身份驗證目的。這些金鑰成對出現:一個私鑰儲存在您計算機的本地,另一個公鑰儲存在您要連線到的遠端伺服器上。
如果任一金鑰被洩露,則應儘快生成新的金鑰。生成新金鑰的過程包括建立一個新的金鑰對並在兩端使用各自的金鑰進行更新。
在Linux系統上,這可以透過在終端中執行`ssh-keygen`來完成。按照提示操作,詢問您希望將新的金鑰對儲存在哪裡,以及是否希望與您的私鑰關聯密碼。
ssh-keygen
生成新的金鑰對後,將新的公鑰上傳到位於`~/.ssh/authorized_keys`的伺服器的`authorized_keys`檔案中。然後,更新客戶端配置檔案以包含新的私鑰。
這可以透過新增以下行來完成:`IdentityFile /path/to/new/private/key`。透過生成一組新的SSH金鑰並在連線的兩端更新它們,您可以確保沒有未經授權的人員可以透過舊金鑰訪問您的伺服器。
結論
在本指南中,我們探討了SSH連線被拒絕錯誤、其常見原因以及如何在伺服器上對其進行故障排除。我們概述了錯誤最常見的原因,包括防火牆設定阻止連線、登入憑據或許可權不正確以及伺服器上未執行SSH服務。
我們還提供了詳細的步驟來解決每個問題。要解決防火牆問題,可以檢查已啟用的防火牆、開啟埠22(SSH的預設埠)並新增例外以允許傳入連線。
為了驗證登入憑據和許可權,使用者應驗證其使用者名稱和密碼是否正確,並檢查伺服器上的使用者許可權。重新啟動SSH服務可以幫助解決SSH連線被拒絕錯誤。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP