- 錯誤型別:
- 其他錯誤
- 錯誤名稱:
- SSH连接被拒绝
- 英文名稱:
- Connection Refused
- 錯誤描述:
- 不幸的是,当您尝试通过SSH连接到服务器时,可能会发生许多情况,这可能会导致显示“Connection refused(连接被拒绝)”错误。
隨著VPS伺服器的流行,SSH也成為了站長必備的開發工具。該工具可授予高階使用者訪問關鍵平臺和軟體的許可權,使編碼和其他任務更容易,更快速且更有組織性。
如果經常使用SSH,相信對“Connection refused(連線被拒絕)”錯誤不會陌生,第一次遭遇這樣的錯誤,甚至可能會讓站長手足無措。但,這其實是一個常見問題,完全可以透過簡單的故障排除進行修復。
本文,我們將討論什麼是SSH以及何時使用它。然後,解釋一些可能導致SSH連線被拒絕的常見原因,包括在PuTTY中。最後,提供一些故障排除教程。
什麼是SSH,何時應使用它?
SSH(全稱為Secure Socket Shell)是一種用於透過不安全網路安全訪問站點伺服器的協議。換句話說,這是一種安全登入遠端伺服器及使用命令列的終端介面:
使用SSH訪問伺服器
與僅允許您上載,刪除和編輯伺服器上的檔案FTP檔案傳輸協議不同的是,SSH可以完成各種各樣的任務。例如,如果WordPress錯誤使您無法進入網站,則可以透過SSH遠端訪問伺服器。
該協議支援使用幾個關鍵的開發人員工具,包括:
- WP-CLI – WordPress命令列。可用於各種任務,包括新安裝,批次更新外掛和匯入媒體檔案。
- Composer – 一個PHP軟體包管理器。有了它,你可以提取必要的庫和依賴項來編輯網站編碼時使用多個框架。
- Git – 一個版本控制系統用於跟蹤碼的變化。這對於團隊協作專案特別有用。
- npm – 一個JavaScript包管理器。它包括命令列和JavaScript軟體登錄檔。
請務必注意,使用SSH需要熟悉伺服器運維管理知識。不建議小白使用者直接嘗試自行解決SSH問題,應該尋求開發人員或伺服器提供商幫助。
SSH很安全高效,但也能夠讓你感受“一失足千古恨”。輸入簡單的錯誤命令可能會導致整個伺服器癱瘓,因此,瞭解自己在做什麼至關重要。
為什麼SSH連線被拒絕?
不幸的是,當您嘗試透過SSH連線到伺服器時,可能會發生許多情況,這可能會導致顯示“Connection refused(連線被拒絕)”錯誤。
以下是一些可能會給您帶來麻煩的最常見問題。
1. 原因:本地計算機上未安裝SSH客戶端
要使用 PuTTY 或類似程式建立 SSH 連線,需要兩個元件:本地計算機上的 SSH 客戶端和遠端伺服器上執行的 SSH 守護程序。SSH 客戶端啟動連線,而 SSH 守護程序則偵聽傳入的連線請求並進行驗證。
在大多數情況下,伺服器(尤其是託管 WordPress 主機)都預裝了必要的守護程式。不過,如果您使用的是專用主機,可能需要手動安裝守護程序。
安裝了守護程式後,伺服器就可以接受 SSH 連線,從而讓你可以與伺服器建立安全、經過驗證的連線。
解決方案:安裝SSH客戶端
你可以在終端視窗進行快速檢查,以確定系統上是否安裝了 SSH 客戶端。
只需鍵入 “ssh” 並點選 Enter。
如果終端顯示可用的 ssh 命令選項列表,則表明 SSH 客戶端已安裝在系統中。我的情況就是如此:
但是,如果響應是 “command not found”,則說明未安裝 SSH 客戶端,需要安裝 OpenSSH 客戶端才能啟用 SSH 功能。
要在機器上安裝 SSH 客戶端,請按照以下步驟操作:
- 在系統上開啟終端。
- 根據作業系統,執行以下命令之一:
對於 Ubuntu/Debian 系統:
sudo apt install openssh-client
對於 CentOS/RHEL 系統:
sudo yum install openssh-client
2. 原因:遠端伺服器上未安裝或執行SSH守護程序
如果 SSH 守護程序不可用或未執行,可能會導致與 SSH 本地主機的傳入連線受阻。
解決方法:手動安裝SSH守護程序軟體包
大多數虛擬主機公司通常會在伺服器上預裝 SSH 守護程序。不過,如果 SSH 守護程序的狀態報告為 Down,則應聯絡主機提供商解決此問題。
要檢查 SSH 守護程序的狀態,請根據系統使用以下命令之一:
sudo service ssh status
或
sudo systemctl status sshd
或
systemctl status ssh
如果您看到 active (running),如上面的截圖所示,這意味著服務處於活動狀態。
因此,要檢查 SSH 守護程序服務是否處於活動狀態,請執行此命令檢視 SSH 程序是否處於活動狀態:
ps aux | grep sshd
如果 SSH 正在執行,你將看到包含 sshd 行的輸出。如果沒有,則 SSH 可能已停機。
在管理專用伺服器或本地主機時,有必要手動安裝 SSH 守護程序軟體包。
安裝 OpenSSH 客戶端和伺服器應用程式非常簡單。要安裝 OpenSSH 伺服器應用程式和相關支援檔案,請在終端執行以下命令:
sudo apt install openssh-server
透過執行該命令,可以安裝所需的元件,以確保 SSH 守護程序正常執行並建立成功的 SSH 連線。
3. 原因:防火牆阻止SSH連線
如果出現 “SSH 連線被拒絕 ”錯誤,伺服器的防火牆很可能阻止了傳入的 SSH 連線。要解決這個問題,必須應用特定的防火牆規則,允許 SSH 連線請求。
解決方案:允許SSH連線透過防火牆
要檢查防火牆是否阻止了 SSH 埠,請使用以下命令:
sudo ufw status
該命令將顯示當前的防火牆規則。在允許的埠列表中查詢 SSH 埠(預設為 22)。如果 SSH 埠未列出,可以使用:
sudo ufw allow ssh
如果伺服器使用自定義 SSH 埠(如 2222),請將 ssh 替換為埠號:
sudo ufw allow 2222
執行命令後,防火牆將更新為允許傳入 SSH 連線。
4. 原因:SSH憑據或埠配置不正確
要建立從客戶端到伺服器的 SSH 連線,必須提供特定的憑證。如果其中任何一項設定不正確,伺服器就會發出“拒絕連線”資訊。
以下是 SSH 連線所需的詳細資訊:
- Hostname:指伺服器的地址,可以是 IP 地址、伺服器名稱或網站域名(如果域名的 A 記錄指向伺服器)。
- SSH username:必須提供與網站或伺服器上 SSH 伺服器相關聯的使用者名稱。
- Password:如果使用基於密碼的身份驗證,請確保輸入正確的密碼。如果使用的是 SSH 金鑰,密碼提示指的是私人 SSH 金鑰的口令。
- Port:SSH 連線的預設埠是 22。不過,許多託管提供商使用自定義 SSH 埠來增強安全性。
您可以透過執行以下命令來驗證是否開啟了正確的 SSH 埠:
grep Port /etc/ssh/sshd_config
執行此命令將顯示 SSH 所用埠號的輸出。
解決方案:仔細檢查輸入的證書
登入主機提供商的控制面板,確保您擁有正確的證書。查詢顯示 SSH 憑據的部分。
在輸入憑據時,務必仔細檢查並考慮可能出現的錯別字或輸入錯誤的 IP 地址或埠。注意核實憑證的準確性,確保輸入正確。
5. 原因:SSH服務未執行或需要重啟
解決 SSH“拒絕連線”錯誤的另一個辦法是重啟 SSH 服務。
解決方案:重啟SSH服務
要重啟 SSH 服務,請使用以下命令之一:
sudo service ssh restart
或者
sudo systemctl restart sshd
該命令將重新啟動 SSH 服務。此操作可讓 SSH 服務重新啟動,從而解決任何潛在問題並建立成功的 SSH 連線。
任何妨礙 SSH 連線的潛在問題或故障都可以透過重啟 SSH 服務來解決。
注意: sudo service ssh restart 命令可能無法在所有系統上執行。有些系統使用 systemctl。
6. 原因:SSH訪問已停用
在某些情況下,伺服器上可能安裝了 SSH 守護程序,但出於安全原因被停用。如果 SSH 訪問被停用,伺服器將拒絕接受 SSH 連線請求。
解決方案:啟用SSH訪問
要啟用 SSH 訪問,請使用以下命令啟動 SSH 服務:
sudo service ssh start
如果命令執行無誤,說明 SSH 服務已成功啟動。如果服務已在執行,該命令不會做任何更改。
您也可以使用以下命令啟用 SSH 服務,使其在系統啟動時自動啟動:
sudo systemctl enable ssh
這可確保 SSH 在伺服器重啟後仍處於活動狀態。
7. 原因:SSH埠已關閉
SSH 連線依賴特定埠(預設為 22)與伺服器通訊。如果該埠關閉,伺服器將拒絕 SSH 連線請求。
解決方案:開啟SSH埠
1. 檢查SSH埠是否開啟
要檢查 SSH 埠是否處於開啟和監聽狀態,請執行
sudo lsof -i:22
如果輸出結果的 STATE(狀態)欄下包含 LISTEN(連線),則表示埠已開啟。否則,您需要開啟它。
注意:
有些伺服器上,lsof -i:22 等 sudo 命令受到限制。請使用
netstat -tnl | grep :22
在我的案例中,輸出結果顯示 SSH 正在執行,並主動監聽 IPv4(0.0.0.0:22)和 IPv6(:::22)的 22 埠。
如果沒有輸出,說明埠 22 已關閉。
2. 驗證SSH埠配置
要檢查 SSH 使用的埠,請執行
grep Port /etc/ssh/sshd_config
如果埠被註釋(#埠 22)或更改(如埠 2222),請編輯配置檔案:
sudo nano /etc/ssh/sshd_config
- 取消埠一行的註釋(#埠 22 → 埠 22)
- 如果需要其他埠,請相應更新
- 儲存並退出(CTRL + X,然後 Y,然後 Enter)
3. 重啟SSH服務
更新埠後,重啟 SSH 服務:
sudo service ssh restart
或者
sudo systemctl restart ssh
4. 在防火牆中開啟SSH埠
如果 SSH 因防火牆規則而被阻止,請允許埠 22 的流量:
sudo ufw allow 22
為什麼PuTTY連線被拒絕?
PuTTY是一款最受歡迎的SSH客戶端,幫助站長在SSH協議下安全地連線並管理伺服器。與PuTTY相似的另一個客戶端是Xshell。
PuTTY下載頁面
如果在使用PuTTY連線伺服器時出現“Connection refused(連線被拒絕)”錯誤,則可能是上面列出的原因之一。
這是SSH連線錯誤,無論您使用的是PuTTY,終端還是其他任何透過SSH連線到伺服器的軟體。
如何解決SSH連線錯誤?
遇到SSH連線錯誤時,根據原因可以採取一些步驟來進行故障排除。以下是一些技巧,希望能夠幫助你解決“Connection refused(連線被拒絕)”錯誤:
- 如果是SSH服務已關閉。 請與您的主機提供商聯絡,以瞭解為什麼您的SSH服務未執行。對於localhost或專用伺服器,您可以使用命令
sudo service ssh restart
嘗試使其再次執行。 - 如果是輸入了錯誤SSH憑據。 使用
grep Port /etc/ssh/sshd_config
命令仔細檢查SSH埠後 ,請嘗試使用正確的詳細資訊再次連線。 - 如果是SSH埠已關閉。 在要連線的伺服器上安裝SSH daemon,或更改防火牆規則以接受到SSH埠的連線。
- 如果是伺服器未安裝SSH。 使用命令
sudo apt install openssh-server
在要連線的伺服器上安裝SSH工具(例如OpenSSH)。 - 如果是防火牆攔截SSH連線。 透過將目標埠的設定更改為ACCEPT來停用防火牆規則阻止SSH連線。
如果你使用的伺服器提供技術支援,不妨直接與技術人員聯絡,比起嘗試自行解決問題可能更明智。如果上述解決方案均無效,則可以這方面技術比較靠譜的人員協助,或者透過網際網路找找看是否有應對的措施。
您是否透過SSH收到“Connection refused(連線被拒絕)”錯誤?藉助此指南,瞭解為什麼發生這種情況以及如何解決SSH連線錯誤。
SSH故障排除的其他技巧和最佳實踐
既然我們已經瞭解了一些問題和解決 SSH“拒絕連線”錯誤的方法,下面就讓我們來探討 SSH 故障排除的其他技巧和最佳實踐。
1. 探索SSH除錯和日誌記錄技巧
在 Linux 中,你可以使用“verbose”或“debugging”模式來分析 SSH 問題。啟用該模式後,SSH 可以顯示詳細的除錯資訊,幫助排除連線、配置和身份驗證問題。
有三個級別的冗長度可供選擇:
第 1 級 (-v): 要啟用該級別,可以在使用 ssh 命令訪問遠端伺服器時新增選項 -v。例如
ssh -v [server_ip]
第 2 級 (-vv): 該級別提供更高的冗餘級別。可以使用 -vv 選項啟用它:
ssh -vv [server_ip]
第 3 級 (-vvv): 該級別提供最高的冗餘級別,並提供最詳細的除錯資訊。要啟用它,可以使用 -vvv 選項:
ssh -vvv [server_ip]
透過使用所需的冗餘級別執行 SSH 命令,可以深入瞭解 SSH 連線過程中出現的任何問題。
除了冗餘模式,你還可以使用另一種方法,透過檢查系統日誌來診斷 SSH 問題。
Linux 發行版通常會在 /var/log/auth.log
或 /var/log/secure
等檔案中儲存 SSH 相關日誌。你可以檢查這些日誌中與 SSH 連線相關的任何錯誤資訊或警告。
透過使用“verbose”模式和檢視系統日誌,你可以更好地瞭解 SSH 問題,並有效地排除故障。
2. 實施SSH安全措施
實施適當的安全措施對於保護 SSH 連線和確保系統完整性至關重要。
請考慮以下做法:
- 停用 SSH 密碼驗證:使用基於 SSH 金鑰的身份驗證,而不是依賴密碼。這種方法透過使用公鑰對和私鑰對提供更強的安全性。
- 設定強大的密碼/口令:如果仍使用密碼驗證,請確保為 SSH 賬戶設定強大、唯一的密碼或口令。使用大小寫字母、數字和特殊字元的組合。
- 限制 SSH 訪問:限制只有授權使用者才能訪問 SSH。定期檢查和更新允許的使用者列表,最大限度地減少潛在漏洞。
- 將 SSH 配置為使用非預設埠:將預設 SSH 埠(22)更改為不同的非標準埠,有助於減少自動掃描嘗試和針對 SSH 的潛在攻擊。
- 利用防火牆規則:配置防火牆規則,只允許來自受信任 IP 地址或網路範圍的 SSH 連線。這樣可以透過限制 SSH 訪問特定來源來增加額外的保護層。
- 停用 SSH 根登入:禁止透過 SSH 直接登入 root。取而代之的是使用普通使用者賬戶,並在必要時使用 sudo 命令切換到 root 使用者。這樣可以防止針對 root 賬戶的未經授權的訪問嘗試。
- 定期檢視 SSH 日誌:監控並檢視 SSH 日誌,以發現可疑活動或登入嘗試失敗。不尋常或重複失敗的登入嘗試可能表明存在暴力或其他惡意活動。
3. 定期更新和維護SSH元件
定期更新和維護 SSH 元件對於保持系統安全和最新狀態至關重要。
請考慮以下做法:
- 更新 SSH 軟體:使用最新版本的 SSH 軟體,包括客戶端和伺服器元件。定期更新系統的 SSH 軟體包或軟體,以便從安全補丁和漏洞修復中獲益。
- 啟用自動更新:配置系統,以便在有更新時自動更新 SSH 軟體。這樣可以確保及時安裝重要的安全補丁。
- 定期檢查 SSH 配置:定期檢查和稽覈 SSH 配置,包括 SSH 伺服器設定和客戶端配置,確保它們符合安全要求和最佳實踐。
- 備份 SSH 配置和金鑰:定期備份 SSH 配置和金鑰檔案。這有助於防止 SSH 設定意外丟失或損壞,並確保在需要時可以恢復。
- 監控 SSH 供應商公告:隨時瞭解 SSH 軟體供應商或發行版的安全公告和通知。訂閱相關的安全郵件列表或關注官方渠道,及時接收有關漏洞和補丁的資訊。
透過實施這些 SSH 安全實踐並保持定期更新和維護,可以增強 SSH 連線的安全性和穩定性,降低潛在風險。
在進行 SSH 故障排除時,你可能還會遇到與網站或網路應用程式有關的問題。要了解有關解決常見網站問題的更多資訊,請檢視我們的綜合指南:如何解決常見的 WordPress 問題。本資源將幫助您識別和解決在維護和管理 WordPress 網站過程中可能出現的各種問題。
小結
在許多情況下,使用SSH連線伺服器很方便。尤其是當您無法訪問WordPress儀表盤,你還可以透過WP-CLI執行命令,使用Git跟蹤站點程式碼的更改,以恢復站點訪問。
解決“SSH 連線被拒絕”錯誤對於建立對 WordPress 網站的安全遠端訪問至關重要。在本故障排除指南中,我們探討了導致該錯誤的常見原因,並提供了實用的解決方法。
瞭解根本原因(如 SSH 客戶端丟失、防火牆阻塞、憑據或埠配置不正確以及 SSH 服務問題)後,你就能有效地排除故障並解決該錯誤。
只要按照概述的方法逐步操作,包括安裝/配置 SSH 客戶端、確保 SSH 守護程序的存在、解決防火牆問題、驗證憑證和埠配置以及重啟/啟用 SSH 服務,就能克服這些挑戰,成功建立與 WordPress 網站的 SSH 連線。
相關閱讀:《站長必藏:26個Linux伺服器管理常用SSH命令列》
評論留言
脣槍舌劍 (5)
SUN
2023.3.16 10:03
谢谢大佬指点,启动服务就好了
systemctl start ssh.service
江圳一
2022.12.8 19:12
找不到指定文件怎么办?
WBOLT_COM
2022.12.8 22:12
找不到什么指定文件?
xiaohuolong
2022.2.16 18:02
求问为什么所有代码我再mac里都找不到command
WBOLT_COM
2022.2.17 12:02
环境没配置好?