1、背景
在同一机房中,有多台安装了CentOS 7操作系统的服务器,它们的配置除了IP地址不同外基本相同。这些服务器的资源利用率都不高,但在使用SSH连接时,发现有几台服务器连接速度较慢,可能需要等待30-60秒才能提示输入密码,但一旦连接成功后,速度就恢复正常。
2、SSH登陆慢原因
这种情况主要有两种可能的原因:
2.1. DNS反向解析问题
OpenSSH在用户登录的时候会验证IP,它根据用户的IP使用反向DNS找到主机名,再使用DNS找到IP地址,最后匹配一下登录的IP是否合法。如果客户机的IP没有域名,或者DNS服务器很慢或不通,那么登录就会很花时间。
解决办法:
在目标服务器上修改sshd服务器端配置,默认情况下会有一行被注释掉的记录#UseDNS yes,虽然这条记录被注释掉了,但ssh缺省情况下UseDNS的值是yes,所以要显式的指定该值为no。
vi /etc/ssh/sshd_config
UseDNS no
并重启ssh服务。
systemctl restart sshd.service
2.2 关闭ssh的gssapi认证
用ssh -v user@server 可以看到登录时有如下信息:
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
注意 1:ssh -vvv user@server 可以看到更细的debug信息。
注意 2:GSSAPI ( Generic Security Services Application Programming Interface) 是一套类似Kerberos 5的通用网络安全系统接口,该接口是对各种不同的客户端服务器安全机制的封装,以消除安全接口的不同,降低编程难度,但该接口在目标机器无域名解析时会有问题,使用strace查看后发现,ssh在验证完key之后,进行authentication gssapi-with-mic,此时先去连接DNS服务器,在这之后会进行其他操作。
解决办法:
修改sshd服务器端配置。
vi /etc/ssh/sshd_config
GSSAPIAuthentication no
并重启ssh服务。
systemctl restart sshd.service
3、总结
在连接速度较慢的机器均修改了sshd配置,同时关闭DNS反向解析以及gssapi认证,修改后机器ssh都很快,秒连。