有时候远程ssh登陆CentOS时登陆时间太长,网上查找发现主要有2个问题会导致这个问题:
1、DNS反向解析的问题
LINUX系统的一个文件/etc/nsswitch.conf ,在这里面有如下一行
hosts: files dns
这行的含义是OpenSSH在用户登录的时候会验证IP,它根据用户的IP使用反向DNS找到主机名,再使用DNS找到IP地址,最后匹配一下登录的IP是否合法。如果DNS不可用或者没有相关记录,就会耗费大量时间。对于访问的主机进行域名解析的顺序,是先访问file,也就是/etc/hosts文件,如果hosts中没有记录域名,则访问dns,进行域名解析
修改/etc/ssh/sshd_config中UseDNS项,默认注释掉了,但ssh缺省情况下UseDNS的值是yes,我们需要改成no
1
2
3
4
5
6
7
8
9
10
|
[root@zabbix ~]
#cat /etc/ssh/sshd_config | grep -i dns
#UseDNS yes
[root@zabbix ~]
#cp /etc/ssh/sshd_config{,`date +Y%m%d`bak}
[root@zabbix ~]
#sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
[root@zabbix ~]
#cat /etc/ssh/sshd_config | grep -i dns
UseDNS no
[root@zabbix ~]
#/etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@zabbix ~]
#
|
注意:修改前先备份,修改完成重启后不要关闭会话,重新打开一个会话验证能否正常远程,防止误修改无法远程
2、关闭ssh的gssapi认证
GSSAPI ( Generic Security Services Application Programming Interface) 是一套类似Kerberos 5 的通用网络安全系统接口。该接口是对各种不同的客户端服务器安全机制的封装,以消除安全接口的不同,降低编程难度。但该接口在目标机器无域名解析时会有问题,默认情况下,GSSAPIAuthentication在服务器端和客户端都激活的。如果DNS服务出现问题,那么登录过程要等到DNS查询超时后才能继续,这就是为什么SSH登录提示符要等很久才出现的原因。 为什么ssh登录过程中要用到DNS解析服务呢?这个是GSSAPI认证方式需要的缘故。
可以通过修改服务端/etc/ssh/sshd_config中GSSAPIAuthenticatio项,或者客户端登陆时候指定GSSAPIAuthenticatio=no
服务端修改:
1
2
3
4
5
6
|
[root@zabbix ~]
#grep "GSSAPIAuthenticatio" /etc/ssh/sshd_config
#GSSAPIAuthentication no
GSSAPIAuthentication
yes
[root@zabbix ~]
#grep "GSSAPIAuthenticatio" /etc/ssh/sshd_config
#GSSAPIAuthentication no
GSSAPIAuthentication
yes
|
客户端指定:
1
|
ssh
-o GSSAPIAuthentication=no root@192.168.100.182
|
清除原有ssh密钥方法
重装系统后无法scp
ssh-keygen -R 10.10.15.89