1.DNS反向解析的问题
OpenSSH在用户登录的时候会验证IP,它根据用户的IP使用反向DNS找到主机名,再使用DNS找到IP地址,最后匹配一下登录的IP是否合法。如果客户机的IP没有域名,或者DNS服务器很慢或不通,那么登录就会很花时间。
解决办法:
在目标服务器上修改sshd服务器端配置,并重启sshd
vi/etc/ssh/sshd_config,设置UseDNS为no即可
当然也可以通过提供DNS正确反向解析的方法解决,有如下两种思路
(1)在server上/etc/hosts文件中把常用的ip和hostname加入,然后在/etc/nsswitch.conf看看程序是否先查询hosts文件(一般缺省是这样)。
修改server上的hosts文件,将目标机器的IP和域名加上去。或者让本机的DNS服务器能解析目标地址。
vi/etc/hosts
192.168.12.16ourdev
其格式是“目标机器IP目标机器名称”这种方法促效。没有延迟就连上了。不过如果给每台都加一个域名解析,挺辛苦的。但在windows下用putty或secure-crt时可以采用这种方法。
(2)起一台dns服务器(可以是本机),加入反向解析,把这个dns服务器加入到/etc/resolv.conf中。
2.关闭ssh的gssapi认证
用ssh-vuser@server可以看到登录时有如下信息:
debug1:Nextauthenticationmethod:gssapi-with-mic
debug1:UnspecifiedGSSfailure.Minorcodemayprovidemoreinformation
注:ssh-vvvuser@server可以看到更细的debug信息
解决办法:
在客户端上修改ssh客户端配置(注意不是sshd_conf)
vi/etc/ssh/ssh_config,设置GSSAPIAuthenticationno并重启sshd
可以使用ssh-oGSSAPIAuthentication=nouser@server登录
GSSAPI(GenericSecurityServicesApplicationProgrammingInterface)是一套类似Kerberos5的通用网络安全系统接口。该接口是对各种不同的客户端服务器安全机制的封装,以消除安全接口的不同,降低编程难度。但该接口在目标机器无域名解析时会有问题
使用strace查看后发现,ssh在验证完key之后,进行authenticationgssapi-with-mic,此时先去连接DNS服务器,在这之后会进行其他操作。
Ps:RHEL6.3测试通过。两个选项是相关联的,建议全部修改。