網絡問題是SSH超時的常見原因,需優先排查:
ping <服務器IP>
命令測試客戶端與服務器的連通性,若丟包率高或無法ping通,需檢查物理網線、Wi-Fi信號或路由器配置。traceroute <服務器IP>
(Linux)或tracert <服務器IP>
(Windows)命令檢查網絡路徑中的延遲或阻斷點,確認網絡路由是否正常。確保SSH服務已啟動并正常運行:
systemctl status sshd
命令,若服務未運行,使用systemctl start sshd
啟動服務;若需開機自啟,執行systemctl enable sshd
。netstat -tulnp | grep 22
,若端口被占用,需修改/etc/ssh/sshd_config
中的Port
參數為其他端口(如2222),并更新防火墻規則。修改/etc/ssh/sshd_config
文件,優化超時相關參數:
UseDNS no
,避免SSH連接時因DNS解析失敗導致超時。TCPKeepAlive yes
,保持TCP連接活躍,防止中間網絡設備斷開空閑連接。ClientAliveInterval 60
(服務器每60秒向客戶端發送一次保持連接信號)和ClientAliveCountMax 3
(若客戶端3次未響應,則斷開連接,總超時時間為180秒)。GSSAPIAuthentication no
,減少認證過程中的延遲。systemctl restart sshd
使配置生效。在客戶端本地配置SSH保持連接,避免因客戶端空閑導致超時:
~/.ssh/config
文件(若不存在則創建),添加以下內容:Host *
ServerAliveInterval 60 # 客戶端每60秒向服務器發送一次保持連接信號
ServerAliveCountMax 3 # 允許最多3次無響應,總超時180秒
保存后,客戶端后續連接將自動應用此配置。
確保防火墻或SELinux未阻止SSH連接:
firewall-cmd --list-all
查看是否允許SSH服務(ssh
),若未允許,執行firewall-cmd --permanent --add-service=ssh
添加規則,然后firewall-cmd --reload
重新加載配置。Enforcing
模式,執行setenforce 0
臨時關閉(測試是否解決問題),若需永久關閉,修改/etc/selinux/config
中的SELINUX=disabled
。若/var/log/btmp
文件過大(記錄失敗登錄嘗試),可能導致SSH讀取緩慢:
echo > /var/log/btmp
清空文件(需root權限),減少登錄時的文件讀取負擔。若因網絡波動導致SSH斷開,可使用tmux
或screen
工具保持會話:
sudo yum install tmux
,啟動tmux
,斷開后可重新連接并恢復會話(tmux attach
)。sudo yum install screen
,啟動screen
,斷開后可重新連接并恢復會話(screen -r
)。若服務器負載過高(CPU、內存占用率超過80%),可能導致SSH響應緩慢:
top
或htop
命令查看系統負載,關閉不必要的進程(如大型計算任務、未使用的服務),或升級服務器硬件(如增加CPU、內存)。以上方法覆蓋了SSH連接超時的常見原因,按順序排查即可解決大部分問題。若問題仍未解決,建議查看/var/log/secure
日志文件,獲取具體錯誤信息(如“Connection timed out”“Permission denied”),進一步針對性排查。