要连接那台机器,就在哪台机器上修改下面的文件
==============================================
vim /etc/ssh/sshd_config
GSSAPIAuthentication no
UseDNS no
=============================================
原理说明:
SSH协议介绍:SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
对于这个问题我们可以用ssh的详细模式跟踪(ssh -v x.x.x.x)一下,发现主要问题出在GSS认证和DNS解析上。在SSH连接中,GSSAPIAuthentication 参数主要是用于 Kerberos 校验认证的,USEDNS是用来做反向查询的。看一个图示:
最后一行显示了GSSAPI认证的进行过程。在UseDNS选项打开状态下,当客户端试图登录OpenSSH服务器时,服务器端先根据客户端的IP地址进行DNS PTR反向查询,查询出客户端的host name,然后根据查询出的客户端host name进行DNS 正向A记录查询,验证与其原始IP地址是否一致,这是防止客户端欺骗的一种手段,但一般我们的IP是不会有PTR记录的,打开这个选项只能浪费时间,所以这两项认证可以关闭。
针对分析的结果,我们修改/etc/ssh/sshd_config 文件,设置GSSAPIAuthentication no ,同时设置 UseDNS no,最后保存修改,重启sshd服务再连接这个问题就可以解决了。