[排错] 解决 SSH 远程登录时很慢但 ping 时延迟很低

分析

ssh 远程某台服务器时很慢,但是 ping 时延迟却很低。这可能是 DNS 解析出现问题造成的,禁用服务器上 sshd 的 GSSAPIAuthentication 参数和 UseDNS 参数可以解决,这两个参数的作用是:
1) GSSAPIAuthentication,当服务器的 sshd 服务此参数处于开启状态时,客户端 SSH 登录此服务器时,客户端会对服务器的 IP 地址进行 PTR 反解析,获得服务器的域名,再通过服务器的域名对服务器进行 DNS A 正向 IP 地址解析,通过此方法来防止欺骗。
2) UseDNS,当服务器的 sshd 服务此参数处于开启状态时,客户端 SSH 登录此服务器时,服务器会对客户端的 IP 地址进行反解析,获得客户端的域名,再通过客户端的域名对客户端进行 DNS A 正向 IP 地址解析,通过此方法来防止欺骗。

解决方法

方法一:忽略 DNS

1.1 修改 SSH 的配置文件

# vim /etc/ssh/sshd_conf

将以下内容:

......
UseDNS yes
......
GSSAPIAuthentication yes
......

修改为:

......
UseDNS no
......
GSSAPIAuthentication no
......

1.2 让修改的 SSH 配置文件生效

# systemctl restart sshd

方法二:重启 systemd-logind

2.1 重启 dbus

# systemctl restart dbus

2.2 重启 systemd-logind

# systemctl restart systemd-logind

(注意:如果不重启 dbus 直接重启 systemd-logind 则可能会报错)