现象:

在机房内网中,用ssh连某台服务器非常慢,基本需要等待15-30秒才会提示让输入密码,但是ping目标机器,延时都是微秒级别,可见并非网络原因造成连接缓慢。

解决办法:

方法一:

修改本机的客户端配置文件ssh_conf,注意,不是sshd_conf
# vi /etc/ssh/ssh_config
找到:
GSSAPIAuthentication yes
改为:
GSSAPIAuthentication no
保存退出:
# service sshd restart
再连目标机器,速度就飞快了。
解释:GSSAPI ( Generic Security Services Application Programming Interface) 是一套类似Kerberos 5 的通用网络安全系统接口。该接口是对各种不同的客户端服务器安全机制的封装,以消除安全接口的不同,降低编程难度。但该接口在目标机器无域名解析时会有问题。
/etc/ssh/ssh_conf配置实例:
Host    *
GSSAPIAuthentication        no
GSSAPIDelegateCredentials   yes
PasswordAuthentication      yes
RSAAuthentication           yes
StrictHostKeyChecking       no
Port                        22
SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
SendEnv LC_IDENTIFICATION LC_ALL
SendEnv LC_IDENTIFICATION LC_ALL LANGUAGE
SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
SendEnv XMODIFIERS

方法二:

如果你连接缓慢的目标机器是新添加,那么可以使用本方法,修改目标机器sshd_conf配置文件
#  vi /etc/ssh/sshd_config
找到:
#UseDNS yes
GSSAPIAuthentication yes
修改为:
UseDNS no
GSSAPIAuthentication no
保存退出
# service sshd restar
然后,我们再使用ssh连接服务器发现速度飞快!
解释:
UseDNS选项来决定是否对远程主机名进行反向解析,以检查此主机名是否与其IP地址真实对应.默认值为"yes".
如果采用UseDNS yes,客户端登录时,SSH服务端将会打开/etc/hosts,找对映的ip/hostname的解析记录,如果没有找到,这时将会用利用/lib/libnss_dns.so.2动态链接库去/etc/resolv.conf中找DNS服务器做反向解析查询。
如果我们关闭反向解析查询,即UseDNS = no,此时则不会用/etc/host.conf等文件进行hosts/bind反向解析查询,因此会加快连接的速度。
Last modification:November 7th, 2019 at 03:28 am
如果觉得我的文章对你有用,请随意赞赏