在机房内网中,用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反向解析查询,因此会加快连接的速度。