分析
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 则可能会报错)