重新安装机器的情况下我们经常会遇到的一个情况是telnet到server速度很快,但是ssh连接的时候却很慢,大概要等半分钟甚至更久。ping的速度也非常好,让人误以为是ssh连接不上。
在部分环境下,我们重装系统后,会遇到ssh连接过慢的问题,普遍需要等待1-2分钟才能连接上,正常ssh也还能接受,一旦使用scp等传输命令时,经常会因为长时间等不到输入密码而端断开连接,我们可以通过关闭UseDNS和GSSAPIAuthentication来进行连接优化。
什么是UseDNS?
UseDNS为服务器反向解析,假如 UseDNS选项是打开的话,服务器会先根据客户端的 IP地址进行 DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,并验证是否与原始 IP地址一致,通过此种措施来防止客户端欺骗。
服务器默认在/etc/ssh/sshd_config配置文件中默认进行了注释,但是SSH服务还是默认启用了DNS反向解析的功能。
如何关闭?
echo 'UseDNS no' >>/etc/ssh/sshd_config
什么是GSSAPIAuthentication?
GSSAPIAuthentication是基于 GSSAPI 的用户认证,服务器端默认启用了GSSAPI。登陆的时候客户端需要对服务器端的IP地址进行反解析,如果服务器的IP地址没有配置PTR记录,那么就会在这里卡住。
如何关闭?
手动修改/etc/ssh/sshd_config文件中#GSSAPIAuthentication yes为GSSAPIAuthentication no
也可以使用下面的脚本:
sed -i 's/#GSSAPIAuthentication yes/GSSAPIAuthentication no/g' >>/etc/ssh/sshd_config
注意,以上操作执行后,需要重启ssh服务:
service sshd restart