linux ssh连接主机慢的解决方法

jackxiang 2010-2-8 19:00 | |
为何慢:
可以用ssh的详细模式跟踪(ssh -v x.x.x.x)一下,是不是DNS反解析?

     这个问题正是最后面那项 GSSAPIAuthentication 引起的,打开这个ssh的时候可能会先去尝试其他的认证方式.很多地方都会介绍说修改 /etc/ssh/ssh_config 文件,但是其实这并不是最好的办法,因为在下次升级的时候,也许会因为配置文件被修改过,而引起不必要的麻烦.我的解决办法是修改个人用户的配置文件,如下:
echo “GSSAPIAuthentication no” >> ~/.ssh/config

1)修改:/etc/ssh/ssh_config 文件:GSSAPIAuthentication no ,UseDNS no。  vi /etc/ssh/sshd_config  ,别少了个D。

2)也可以修改:~/.ssh/config :GSSAPIAuthentication no ,echo “GSSAPIAuthentication no” >> ~/.ssh/config



今天在各个主机上同步一个snmpd.conf文件时候,发现所有主机都是通过ssh连接到同一台主机上,有的很快连接上了,有的一直处于等待之中.这样就导致集中操作时候出现部分主机操作失败.后来通过分析发现主要是卡在了DNS解析时候.

[root@watchserver ~]# cat /etc/resolv.conf
nameserver 127.0.0.1
[root@watchserver ~]# nslookup
> 192.16.1.2
;; connection timed out; no servers could be reached
>server 202.106.0.20
Default server: 202.106.0.20
Address: 202.106.0.20#53
> 192.16.1.2
Server:        202.106.0.20
Address:    202.106.0.20#53
217.1.168.192.in-addr.arpa    name = localhost.
>

一般情况就是无法解析的时候要一值等到time out才能出现,所以解决方法就是有/etc/resolv.conf中加入正确的dns地址,或者是在/etc/hosts中做好映射.当然还有其他情况也会造成这个问题出现,大致需要注意的地方如下:
1、修改/etc/ssh/sshd_config文件中UseDNS=no
2、修改/etc/nsswitch.conf文件中hosts:files
3、修改/etc/ssh/sshd_config文件中GSSAPIAuthentication no


可以用ssh的详细模式跟踪(ssh -v x.x.x.x)一下,发现主要问题出在GSS认证和DNS解析上:
[xiangdong@localhost ~]$ ssh -v -l xiangdong 192.168.109.108
OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.109.108 [192.168.109.108] port 22.
debug1: Connection established.
debug1: identity file /home/xiangdong/.ssh/identity type -1
debug1: identity file /home/xiangdong/.ssh/id_rsa type -1
debug1: identity file /home/xiangdong/.ssh/id_dsa type -1
debug1: loaded 3 keys
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.3
debug1: match: OpenSSH_4.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none

  针对分析的结果,我们修改/etc/ssh/sshd_config 文件,设置GSSAPIAuthentication no ,同时设置 UseDNS no,最后保存修改,重启sshd服务再连接这个问题就可以解决了。

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2696/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2013-4-15 15:55
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]