當伺服器無法連線 SSH 時該怎麼辦

當你發現伺服器無法透過 SSH 連線時,難免會感到沮喪或擔憂。請先保持冷靜。你可以按照明確的步驟來解決問題,並且無須冒著資料風險盲目操作。請耐心閱讀本指南。你將學會如何在保障資料安全的前提下處理這個問題。為了獲得最佳效果,請依照順序逐步排查。
當伺服器無法連線時的緊急處理措施
當你發現伺服器無法連線時,應儘快先檢查一些基礎項目。這些初步步驟可以幫助你在進入更深入的故障排除之前,先發現一些簡單問題。
檢查伺服器狀態和執行時間
首先,確認你的伺服器實際上正在運作。許多服務商都會提供控制台,你可以在其中查看伺服器是否在線上。如果你看到伺服器已停止或被暫停,那麼你將無法連線。有些服務商可能會因濫用行為或帳單逾期而鎖定伺服器。請查看是否有任何關於伺服器狀態的提醒或警告。如果你看到「connection refused(連線被拒絕)」之類的訊息,表示伺服器可能沒有接受連線請求。
提示:如果你使用的是雲端伺服器租用,請檢查執行個體狀態。執行個體處於已停止或正在重新啟動時,可能會導致 connection timeout(連線逾時)。
查看伺服器租用控制台中的警示資訊
接下來,登入你的伺服器租用控制台,查看其中的警示或通知。這些資訊可能會提示你是否存在濫用鎖定、維護或網路問題。如果你看到 authentication failed(身分驗證失敗)的提示,請再次確認你的使用者名稱、私鑰路徑以及通關片語是否正確。有些控制台會顯示伺服器 unable to ssh(無法 SSH 登入)是否是由於防火牆規則或連接埠被阻擋所造成。如果你看到 connection timeout(連線逾時),請檢查正確的連接埠是否已開放。
你可能會看到的常見警示:
Authentication failed(身分驗證失敗)——檢查你的登入資訊。
Passphrase required(需要通關片語)——輸入你的 SSH 通關片語。
Connection timed out(連線逾時)——檢查你的防火牆和連接埠設定。
確認網路和 IP 位址
你需要確保自己使用的是正確的 IP 位址或主機名稱。一個很小的拼字錯誤都可能導致連線失敗。你可以使用 ping 指令檢查主機名稱是否能夠正確解析。如果 ping 失敗,可嘗試使用第三方 DNS 檢查工具來確認主機名稱是否正確。請始終使用服務商提供的 IP 位址或主機名稱。如果使用錯誤,就可能會看到如 connection refused(連線被拒絕)之類的錯誤。
主機名稱拼寫錯誤會導致無法存取。
Ping 可以幫助你測試伺服器是否有回應。
DNS 檢查工具可以確認主機名稱是否有效。
透過執行這些緊急處理步驟,你通常可以較快找出為什麼無法透過 SSH 登入伺服器。這些檢查可以節省時間,也能幫助你避免過早進入更複雜的排障流程。
排查 SSH 連線問題
當你的伺服器無法透過 SSH 連線時,你需要找出問題究竟從哪裡開始。你可以檢查問題是來自 DNS、網路,還是用戶端設定。請依照以下步驟排查 SSH 連線問題並修復相關故障。
測試主機名稱解析
首先檢查你的電腦是否能夠解析伺服器主機名稱。如果你使用的是主機名稱而不是 IP 位址,那麼你的系統必須先將其轉換為正確的 IP。有時,DNS 問題會導致 connection timeout(連線逾時)或 connection refused(連線被拒絕)。
確保你已經為管理介面和資料介面都設定了 DNS 伺服器。
如果你使用診斷介面進行查詢,請確認該介面已分配 IP 位址。
嘗試 ping 每一個 DNS 伺服器的 IP 位址,查看它們是否有回應。
如果 ping 正常但名稱解析失敗,請檢查你的存取控制規則。
如果 ping 正常、路由正確且存取控制也沒有問題,那麼 DNS 伺服器可能並未保存該完整主機名稱的對應記錄。
說明:如果你能解析出名稱,但得到的 IP 位址並不是最新的,那麼系統可能正在使用快取的 DNS 記錄。這會導致顯示過期 IP 位址,從而造成連線失敗。
使用 Ping 和 Telnet 進行網路檢查
你可以使用一些簡單的網路工具來測試你的電腦能否存取伺服器。ping 指令用於檢查伺服器是否回應網路請求;telnet 指令則用於測試 SSH 連接埠是否開放並接受連線。
使用
ping <hostname or IP>查看伺服器是否有回應。如果 ping 失敗,可能是網路問題,也可能是伺服器離線。
使用
telnet <hostname or IP> 22檢查連接埠是否開放。如果 telnet 無法連線,可能是防火牆阻擋了該連接埠,或者 SSH 服務沒有執行。
提示:如果 ping 正常但 telnet 失敗,請優先檢查防火牆規則或 SSH 服務狀態。
分析 SSH 用戶端日誌
你的 SSH 用戶端會提供連線過程中出現問題的線索。你可以啟用詳細模式來查看更具體的錯誤資訊。這有助於判斷問題出在身分驗證、網路還是設定方面。
執行
ssh -v user@hostname以取得更多資訊。尋找諸如 connection refused(連線被拒絕)、connection timeout(連線逾時)或 authentication failed(身分驗證失敗)之類的訊息。
如果看到 connection refused(連線被拒絕),表示伺服器可能沒有執行 SSH 服務,或者防火牆阻擋了連接埠。
如果看到 connection timeout(連線逾時),表示可能是網路阻斷了連線,或者伺服器已當機。
如果看到 authentication failed(身分驗證失敗),請檢查使用者名稱、密碼或金鑰。
透過這些步驟,你可以逐步縮小 SSH 連線問題的範圍。你將判斷問題究竟來自 DNS、網路還是用戶端設定。這種方式能節省時間,並幫助你更快修復問題。
修復常見 SSH 問題
當你發現伺服器無法連線時,需要檢查一些最常見、會阻止 SSH 存取的問題。依照以下步驟,許多問題都可以得到解決。
檢查 SSH 服務狀態
首先你應確認伺服器上的 SSH 服務是否正在執行。如果服務已停止或當掉,你將無法連線。請登入你的伺服器租用控制台,或使用可用的主控台進行操作。執行以下指令檢查服務狀態:
sudo systemctl status ssh如果服務未處於啟用狀態,可使用以下指令啟動:
sudo systemctl start ssh如果服務未執行,你可能會看到 connection refused(連線被拒絕)或 connection timeout(連線逾時)等錯誤。下表列出了常見錯誤及其含義:
錯誤類型 | 說明 |
|---|---|
主機名稱解析 | 當 SSH 主機無法對應到網路位址時會出現此類錯誤,通常與 DNS 問題有關。 |
連線逾時 | 用戶端在逾時時間內未收到伺服器回應。 |
連線被拒絕 | 連線請求已到達 SSH 主機,但主機未接受該連線。 |
提示:如果你重新啟動 SSH 服務後仍然無法連線,請檢查日誌以取得更多細節。使用
journalctl -u ssh查看最近的日誌資訊。
檢查防火牆和連接埠設定
防火牆可以保護你的伺服器,但如果設定不正確,也會阻止 SSH。你需要確保 22 連接埠已開放。使用以下指令檢查防火牆規則:
sudo iptables -L -n或者,如果你使用的是 firewalld:
sudo firewall-cmd --list-all檢查是否存在允許 22 連接埠流量通過的規則。如果你使用的是其他連接埠,請檢查對應連接埠。如果你看到 connection timeout(連線逾時),表示防火牆可能阻擋了該連接埠。你可以使用以下指令新增一條允許 SSH 的規則:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT說明:一些雲端服務商在控制台中還提供獨立的防火牆設定。請務必同時檢查伺服器本機防火牆和服務商端防火牆。
檢查 SSH 設定檔
SSH 設定檔決定了服務的運作方式。這個檔案中的錯誤設定可能導致你無法連線。使用以下指令開啟設定檔:
sudo nano /etc/ssh/sshd_config請檢查以下常見問題:
Port 22這一行應與你實際使用的連接埠一致。如果你希望允許 root 登入,
PermitRootLogin應設定為yes或prohibit-password。如果你使用密碼登入,
PasswordAuthentication應設定為yes。
修改完成後,重新啟動服務:
sudo systemctl restart ssh提醒:在修改設定檔之前,請務必先做好備份。錯誤的設定可能會把你自己鎖在伺服器之外。
辨識最近的變更
請回想一下,在問題出現之前你做過哪些更改。近期的更新或設定調整很可能會破壞 SSH 存取。以下是一些可能影響 SSH 的變更:
頻寬限制可能會拖慢檔案傳輸速度,讓你誤以為伺服器沒有回應。
變更虛擬檔案系統可能會改變目錄路徑,進而阻礙存取。
升級或降級可能會造成版本不相容。
切換到 IPv6 但未正確設定時,可能會導致逾時。
你還應檢查以下具體要求:
遠端存取需要使用 SSH Version 2。使用舊版本可能會導致連線失敗。
如果你從 IPv6 網路連線,必須設定正確的選項以避免逾時。
警示:務必保留你所做變更的記錄。這樣在 SSH 停止運作時,你能更快找到原因。
透過以上步驟,你可以修復許多常見問題,也能更清楚地理解為什麼伺服器無法連線,以及如何恢復存取。
無法 SSH 登入時的恢復方案
當你無法透過 SSH 登入伺服器時,需要儘快採取措施來恢復存取權限。你有多種恢復方式可供選擇,它們可以幫助你重新取得控制權,並避免資料遺失。
透過主控台或安全模式存取
大多數服務商都會提供基於網頁的主控台或安全模式存取方式。即使伺服器無法透過一般方式連線,你仍可以使用這些工具登入。主控台允許你直接在伺服器上排查問題。安全模式通常只載入最少的服務,這有助於你修復設定錯誤或重新啟動服務。
提示:如果你的服務商提供救援模式(rescue mode),可使用它掛載磁碟並修復檔案,而無須啟動完整系統。
重設 Root 密碼或 SSH 金鑰
如果你懷疑是密碼或金鑰出了問題,可以重設 root 密碼或產生新的金鑰。許多控制台都提供密碼重設工具。你也可以在舊金鑰失效時上傳新的公鑰。這一步有助於繞過身分驗證錯誤並恢復存取。
重設 SSH 金鑰的步驟:
登入到你的控制台。
找到金鑰管理相關區域。
上傳新的公鑰,或重設 root 密碼。
重新啟動服務。
從備份中還原
如果 SSH 故障排除沒有效果,你可能需要從備份中還原伺服器。備份可以保護你的資料,並幫助你從重大錯誤中恢復。請選擇最近且沒有該問題的備份。你可以還原檔案、設定,甚至整個伺服器。
警示:還原之前務必先檢查備份內容,確保其中包含所有重要資料。
攜帶診斷資訊聯絡技術支援
如果你無法自行解決問題,請聯絡你的伺服器租用服務商技術支援團隊。請事先準備好診斷資訊,例如錯誤訊息、日誌以及你已經嘗試過的步驟。技術支援團隊可以幫助你進一步排查問題,並指導你完成恢復。
建議提供的資訊:
SSH 用戶端日誌
伺服器狀態報告
防火牆設定
最近的變更
當伺服器無法連線時,透過以上這些恢復方案,你通常能夠解決大多數問題。請保持冷靜,並依序嘗試每一種方法來重新取得存取權限。
依照順序逐步執行每一個排障步驟,你就能更快解決 SSH 問題。請記錄錯誤訊息和所做的更改。如果你無法自行修復,請事先整理好詳細資訊以便聯絡技術支援。定期備份和監控有助於預防未來再次出現類似問題。你可以採用以下備份策略:
異地備份可以在災難發生時保護你的資料。
本機備份資料夾可以幫助你快速還原檔案。
結構化的備份策略可以更好地保障資料安全。
SSH 安全與監控方面的業界標準包括:
功能 | 說明 |
|---|---|
強加密 | 在傳輸過程中保護資料安全。 |
伺服器身分驗證 | 在建立連線前驗證伺服器身分。 |
完整性保護 | 確保資料在傳輸過程中未被竄改。 |
壓縮 | 透過壓縮資料來提升效能。 |
金鑰交換方法 | 確保金鑰交換過程安全。 |
公開金鑰演算法 | 使用公開金鑰密碼學進行身分驗證。 |
對稱式加密演算法 | 使用對稱式演算法對資料進行加密。 |
訊息驗證演算法 | 確認訊息的真實性。 |
雜湊演算法 | 透過雜湊檢查資料完整性。 |
常見問題
如果你忘記了 SSH 密碼,該怎麼辦?
你可以透過伺服器租用控制台重設密碼。請查找密碼重設選項。如果你使用的是金鑰驗證,也可以上傳新的公鑰。完成變更後,請重新啟動服務。
如何檢查 SSH 連接埠是否開放?
執行 telnet <server IP> 22,或者查看你的伺服器租用防火牆設定。如果能夠建立連線,則表示連接埠已開放;如果不能,請檢查防火牆規則並開放 22 連接埠。
為什麼 SSH 會提示「connection refused(連線被拒絕)」?
這表示伺服器目前不接受連線。可能是 SSH 服務未啟動,也可能是防火牆阻擋了該連接埠。請啟動服務並檢查防火牆設定。
如果遺失了 SSH 金鑰,還能恢復存取嗎?
可以。你可以透過伺服器租用控制台上傳新的公鑰。有些服務商還允許你重設金鑰或密碼。請務必將備用金鑰保存在安全位置。
伺服器因 SSH 問題無法存取後,最安全的恢復方式是什麼?
從最近的備份中還原是最安全的方法。使用你的服務商提供的備份工具,並在還原前檢查備份是否包含重要檔案。這樣可以保護你的資料,並避免進一步的問題。

