zoukankan      html  css  js  c++  java
  • ssh 连接很慢的解决办法

    http://blog.csdn.net/ablo_zhou/article/details/5074887

    =============

    现象:

    在局域网内,能ping通目标机器,并且时延是微秒级。

    用ssh连局域网内其他linux机器,会等待10-30秒才有提示输入密码。严重影响工作效率。

    ========================

    客户端操作系统版本:

    zhouhh@zhhofs:~$ cat /etc/lsb-release 
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=9.10
    DISTRIB_CODENAME=karmic
    DISTRIB_DESCRIPTION="Ubuntu 9.10"

    ========================

    调试信息:

    [css] view plaincopy
     
    1. zhouhh@zhhofs:~$ ssh -v 192.168.12.16  
    2. OpenSSH_5.1p1 Debian-6ubuntu2, OpenSSL 0.9.8g 19 Oct 2007  
    3. debug1: Reading configuration data /etc/ssh/ssh_config  
    4. debug1: Applying options for *  
    5. debug1: Connecting to 192.168.12.16 [192.168.12.16] port 22.  
    6. debug1: Connection established.  
    7. debug1: identity file /home/zhouhh/.ssh/identity type -1  
    8. debug1: identity file /home/zhouhh/.ssh/id_rsa type -1  
    9. debug1: identity file /home/zhouhh/.ssh/id_dsa type -1  
    10. debug1: Remote protocol version 2.0, remote software version OpenSSH_4.3  
    11. debug1: match: OpenSSH_4.3 pat OpenSSH_4*  
    12. debug1: Enabling compatibility mode for protocol 2.0  
    13. debug1: Local version string SSH-2.0-OpenSSH_5.1p1 Debian-6ubuntu2  
    14. debug1: SSH2_MSG_KEXINIT sent  
    15. debug1: SSH2_MSG_KEXINIT received  
    16. debug1: kex: server->client aes128-cbc hmac-mdnone  
    17. debug1: kex: client->server aes128-cbc hmac-mdnone  
    18. debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent  
    19. debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP  
    20. debug1: SSH2_MSG_KEX_DH_GEX_INIT sent  
    21. debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY  
    22. debug1: Host '192.168.12.16' is known and matches the RSA host key.  
    23. debug1: Found key in /home/zhouhh/.ssh/known_hosts:1  
    24. debug1: ssh_rsa_verify: signature correct  
    25. debug1: SSH2_MSG_NEWKEYS sent  
    26. debug1: expecting SSH2_MSG_NEWKEYS  
    27. debug1: SSH2_MSG_NEWKEYS received  
    28. debug1: SSH2_MSG_SERVICE_REQUEST sent  
    29. debug1: SSH2_MSG_SERVICE_ACCEPT received  
    30. debug1: Authentications that can continue: publickey,gssapi-with-mic,password  
    31. debug1: Next authentication method: gssapi-with-mic  
    32. debug1: An invalid name was supplied  
    33. Cannot determine realm for numeric host address  
    34. debug1: An invalid name was supplied  
    35. Cannot determine realm for numeric host address  
    36. debug1: An invalid name was supplied  
    37. debug1: Next authentication method: publickey  
    38. debug1: Trying private key: /home/zhouhh/.ssh/identity  
    39. debug1: Trying private key: /home/zhouhh/.ssh/id_rsa  
    40. debug1: Trying private key: /home/zhouhh/.ssh/id_dsa  
    41. debug1: Next authentication method: password  
    42. zhouhh@192.168.12.16's password:   
    43. debug1: Authentication succeeded (password).  
    44. debug1: channel 0: new [client-session]  
    45. debug1: Entering interactive session.  
    46. debug1: Sending environment.  
    47. debug1: Sending env LANG = zh_CN.UTF-8  
    48. Last login: Fri Dec 25 13:35:04 2009 from 192.168.11.146  

    可以看到如下的错误信息:

    debug1: Next authentication method: gssapi-with-mic
    debug1: An invalid name was supplied
    Cannot determine realm for numeric host address

    事实上,正是从gssapi-with-mic这一行开始,开始耗时间。

    ====================

    失败的尝试:


    有人说是在目标机器中修改/etc/ssh/sshd_conf文件

    将UseDNS 的缺省值由yes修改为no,并重启sshd。我试了,对这种情况不管用。但不排除对别的延迟情况管用。

    ====================

    有效的解决办法:

    1. 修改本地机器的hosts文件,将目标机器的IP和域名加上去。或者让本机的DNS 服务器能解析目标地址。

    vi /etc/hosts

    192.168.12.16  ourdev

    其格式是“目标机器IP 目标机器名称”这种方法促效。没有延迟就连上了。不过如果给每台都加一个域名解析,挺辛苦的。但在windows下用putty或secure-crt时可以采用这种方法。

    2.修改本机的客户端配置文件ssh_conf,注意,不是sshd_conf

    vi /etc/ssh/ssh_conf

    找到

    GSSAPIAuthentication yes

    改为

    GSSAPIAuthentication no

    保存。

    再连目标机器,速度就飞快了。

    GSSAPI ( Generic Security Services Application Programming Interface) 是一套类似Kerberos 5 的通用网络安全系统接口。该接口是对各种不同的客户端服务器安全机制的封装,以消除安全接口的不同,降低编程难度。但该接口在目标机器无域名解析时会有问题。我看到有人给ubuntu提交了相关bug, 说要将GSSAPIAuthentication的缺省值设为no,不知为何,ubuntu9.10的缺省值还是yes。

    修改完毕,此时的连接调试数据变为了:

    [c-sharp] view plaincopy
     
    1. zhouhh@zhhofs:~$ ssh -v 192.168.12.16  
    2. OpenSSH_5.1p1 Debian-6ubuntu2, OpenSSL 0.9.8g 19 Oct 2007  
    3. debug1: Reading configuration data /etc/ssh/ssh_config  
    4. debug1: Applying options for *  
    5. debug1: Connecting to 192.168.12.16 [192.168.12.16] port 22.  
    6. debug1: Connection established.  
    7. debug1: identity file /home/zhouhh/.ssh/identity type -1  
    8. debug1: identity file /home/zhouhh/.ssh/id_rsa type -1  
    9. debug1: identity file /home/zhouhh/.ssh/id_dsa type -1  
    10. debug1: Remote protocol version 2.0, remote software version OpenSSH_4.3  
    11. debug1: match: OpenSSH_4.3 pat OpenSSH_4*  
    12. debug1: Enabling compatibility mode for protocol 2.0  
    13. debug1: Local version string SSH-2.0-OpenSSH_5.1p1 Debian-6ubuntu2  
    14. debug1: SSH2_MSG_KEXINIT sent  
    15. debug1: SSH2_MSG_KEXINIT received  
    16. debug1: kex: server->client aes128-cbc hmac-md5 none  
    17. debug1: kex: client->server aes128-cbc hmac-md5 none  
    18. debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent  
    19. debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP  
    20. debug1: SSH2_MSG_KEX_DH_GEX_INIT sent  
    21. debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY  
    22. debug1: Host '192.168.12.16' is known and matches the RSA host key.  
    23. debug1: Found key in /home/zhouhh/.ssh/known_hosts:1  
    24. debug1: ssh_rsa_verify: signature correct  
    25. debug1: SSH2_MSG_NEWKEYS sent  
    26. debug1: expecting SSH2_MSG_NEWKEYS  
    27. debug1: SSH2_MSG_NEWKEYS received  
    28. debug1: SSH2_MSG_SERVICE_REQUEST sent  
    29. debug1: SSH2_MSG_SERVICE_ACCEPT received  
    30. debug1: Authentications that can continue: publickey,gssapi-with-mic,password  
    31. debug1: Next authentication method: publickey  
    32. debug1: Trying private key: /home/zhouhh/.ssh/identity  
    33. debug1: Trying private key: /home/zhouhh/.ssh/id_rsa  
    34. debug1: Trying private key: /home/zhouhh/.ssh/id_dsa  
    35. debug1: Next authentication method: password  
    36. zhouhh@192.168.12.16's password:   
  • 相关阅读:
    分布式事务slides
    为什么jdk中把String类设计成final
    Struts 体系结构与工作原理 图
    在指定路径或者是文件名查找指定的字符串
    Apache Avro 与 Thrift 比较
    SSL请求trustStore的两种注册方式
    java中的split使用的是正则表达式
    所有ghost操作系统大全
    Tomcat帮助文档翻译 未完成
    ORACLE基本配置
  • 原文地址:https://www.cnblogs.com/heidsoft/p/4019682.html
Copyright © 2011-2022 走看看