SSH連接慢?六個配置教你徹底搞定!
今天分享一下SSH連接慢的問題。
SSH 連接慢是一個常見的問題,尤其是在首次連接或遠程主機響應較慢時。以下是導致 SSH 連接緩慢的常見原因及其解決方法。
一、排查思路
在優(yōu)化 SSH 前,建議你按照以下順序進行排查:
- 是否慢在“連接前卡頓”?(提示沒出,黑屏數(shù)秒)→ 多半是 DNS、GSSAPI、IPv6 問題。
- 是否慢在“輸入用戶名后卡住”?→ 多半是認證方式問題,比如 GSSAPI、PAM 等。
- 是否只慢在首次連接?→ 檢查密鑰生成、主機驗證緩存。
- 是否只有特定主機連接慢?→ 檢查該主機網(wǎng)絡(luò)、DNS、SSH 配置。
二、解決辦法
1. 禁用 DNS 反向解析
SSH 服務端默認會將客戶端 IP 地址反查為主機名,這會導致連接卡頓,尤其當 DNS 服務不穩(wěn)定時。
解決辦法:
- 修改服務端 /etc/ssh/sshd_config:
# 默認為yes,將其設(shè)置為no
UseDNS no
- 重啟 SSH 服務:
systemctl restart sshd
2. 禁用 GSSAPI 認證
GSSAPI 是用于 Kerberos 網(wǎng)絡(luò)認證的機制,大多數(shù)普通用戶并不使用它,但 SSH 默認啟用,導致連接變慢。
解決方案:
- 服務端配置 /etc/ssh/sshd_config:
# 默認開啟的,將其改為no,表示禁用
GSSAPIAuthentication no
- 客戶端配置 ~/.ssh/config:
Host *
GSSAPIAuthentication no
3. 禁用 IPv6(可選)
SSH 默認使用 IPv6,某些網(wǎng)絡(luò)環(huán)境下 IPv6 不通或響應慢,會導致延遲。
解決方案:
客戶端配置 ~/.ssh/config:
Host *
AddressFamily inet
這個設(shè)置強制使用 IPv4 連接。
4. 配置本地hosts文件
如果你通過主機名(如 liyb)連接 SSH,且該主機名解析依賴外部 DNS,響應慢。
解決方案:
編輯你的本地 /etc/hosts 文件,添加:
10.0.0.100 liyb
這樣無需再查詢 DNS,連接更快。
5. 設(shè)置連接超時時間與重試次數(shù)
SSH 默認嘗試連接多次,且默認連接超時時間較長。
解決方案:
客戶端配置 ~/.ssh/config:
Host *
ConnectTimeout 5
ConnectionAttempts 2
6. 禁用 PAM 模塊認證
PAM 可能影響 SSH 登錄速度,但禁用它會影響系統(tǒng)用戶驗證機制(如使用密碼登錄)?!緶剀疤崾尽窟@個要謹慎操作
# /etc/ssh/sshd_config
UsePAM no
禁用 PAM 后,可能影響 SSH 密碼登錄。適合只使用密鑰認證的環(huán)境。