解决 SSH 速度慢的问题
SSH 连接速度慢是一个常见问题,主要原因通常是 sshd 服务器在尝试进行 DNS 反向查询,将客户端 IP 解析为主机名,这个过程如果 DNS 不可用或没有相关记录,会导致长时间等待。以下是几种解决方法:
方法一:基本配置修改
- 在服务器的
/etc/hosts
文件中添加客户端 IP 和主机名 - 在服务器的
/etc/ssh/sshd_config
文件中添加或修改UseDNS=no
- 重启 SSH 服务
sudo systemctl restart sshd
# 或
sudo service sshd restart
# 或
sudo /etc/init.d/sshd restart
方法二:完整解决方案
如果方法一不能完全解决问题,可以尝试以下更全面的配置:
-
在服务器的
/etc/hosts
文件中添加:127.0.0.1 localhost # 添加客户端 IP 和主机名 192.168.1.100 client-hostname
-
修改服务器的
/etc/ssh/sshd_config
文件:UseDNS no GSSAPIAuthentication no
-
编辑服务器的
/etc/resolv.conf
文件:# 方法1:使用本地 DNS nameserver 127.0.0.1 # 方法2:注释掉所有行 # nameserver 8.8.8.8
-
修改服务器的
/etc/nsswitch.conf
文件中的 hosts 行:hosts: files
-
修改
/etc/sysconfig/network
文件(如果存在):HOSTNAME=localhost
-
重启服务器或重启 SSH 服务:
sudo systemctl restart sshd # 或完全重启服务器 sudo reboot
方法三:客户端配置优化
除了服务器端配置外,也可以在客户端的 SSH 配置中进行优化:
- 编辑
~/.ssh/config
文件(若不存在则创建):Host * GSSAPIAuthentication no Compression yes ControlMaster auto ControlPath ~/.ssh/control:%h:%p:%r ControlPersist yes # 针对特定服务器的优化 Host server-name Hostname server-ip-address User username PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa
额外排查步骤
如果以上方法仍不能解决 SSH 连接慢的问题,可以尝试以下步骤:
-
使用
-v
选项启用详细输出来诊断问题:ssh -v user@server
-
检查服务器的防火墙设置
-
检查
~/.ssh/known_hosts
文件是否过大:wc -l ~/.ssh/known_hosts
如果文件过大,可以备份并创建新文件
-
检查连接延迟:
time ssh user@server exit
-
如果问题与 GSSAPI 认证相关,也可以在客户端禁用:
ssh -o GSSAPIAuthentication=no user@server
以上配置和修改应该能解决大多数 SSH 连接缓慢的问题。请根据自己的具体环境选择合适的方法。
评论