使用该命令:ssh -v [email protected],可以查看连接登录过程的日志
用ssh连其他linux机器,会等待10-30秒才有提示输入密码。严重影响工作效率。登录很慢,登录上去后速度正常,这种情况主要有两种可能的原因:
1. DNS反向解析的问题
OpenSSH在用户登录的时候会验证IP,它根据用户的IP使用反向DNS找到主机名,再使用DNS找到IP地址,最后匹配一下登录的IP是否合法。如果客户机的IP没有域名,或者DNS服务器很慢或不通,那么登录就会很花时间。
解决办法:
在目标服务器上修改sshd服务器端配置,并重启sshd
vi /etc/ssh/sshd_config,设置UseDNS为no即可
当然也可以通过提供DNS正确反向解析的方法解决,有如下两种思路
(1) 在server上/etc/hosts文件中把常用的ip和hostname加入,然后在/etc/nsswitch.conf看看程序是否先查询hosts文件(一般缺省是这样)。
修改server上的hosts文件,将目标机器的IP和域名加上去。或者让本机的DNS 服务器能解析目标地址。
vi /etc/hosts
192.168.12.16 ourdev
其格式是“目标机器IP 目标机器名称”这种方法促效。没有延迟就连上了。不过如果给每台都加一个域名解析,挺辛苦的。但在windows下用putty或secure-crt时可以采用这种方法。
(2)起一台dns服务器(可以是本机),加入反向解析,把这个dns服务器加入到/etc/resolv.conf中。
2. 关闭ssh的gssapi认证
用ssh -v [email protected] 可以看到登录时有如下信息:
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
注:ssh -vvv [email protected] 可以看到更细的debug信息
解决办法:
vi /etc/ssh/ssh_config(ssh,不是sshd),设置GSSAPIAuthentication no 并重启sshd
可以使用ssh -o GSSAPIAuthentication=no [email protected]登录
GSSAPI ( Generic Security Services Application Programming Interface) 是一套类似Kerberos 5 的通用网络安全系统接口。该接口是对各种不同的客户端服务器安全机制的封装,以消除安全接口的不同,降低编程难度。但该接口在目标机器无域名解析时会有问题
最近发现ssh连接的时候却很慢,ping的速度非常好,让人误以为是ssh连接不上。 分析结果,主要原因为:DNS的解析IP导致,可分别使用以下几种分析处理方式
1.linux ssh连接慢
最近发现ssh连接的时候却很慢,ping的速度非常好,让人误以为是ssh连接不上。
分析结果,主要原因为:DNS的解析IP导致,可分别使用以下几种分析处理方式
1、在server上/etc/hosts文件中把你本机的ip和hostname加入
2、在server上/etc/ssh/sshd_config文件中修改或加入UseDNS=no
3、注释掉server上/etc/resolv.conf中不使用的IP所有行
4、修改server上/etc/nsswitch.conf中hosts为hosts:files
5、authentication gssapi-with-mic也有可能出现问题,在server上/etc/ssh/sshd_config文件中修改 GSSAPIAuthentication no。/etc/init.d/sshd restart重启sshd进程使配置生效。
如之前为服务器配置了双网卡,使的在/etc/resolv.conf文件中多了一行目前不使用的IP地址。注释或者删除该行即可。
2.mysql连接速度慢
在局域网内连接其他机器的MYSQL,发现速度慢的很,不知道什么原因,总有几秒的延迟.
远程连接mysql异常缓慢,经常执行一条命令,然后要等个10几秒执行下一条。解决方法是在mysql的my.ini中的mysqld节加入skip-name-resolve,该命令参数避免了对主机名进行解析从而加快连接速度。
后来在网上发现解决方法,my.ini里面添加<linux中在/etc/my.cnf>
[mysqld]
skip-name-resolve
skip-grant-tables
这样速度就快了!
- skip-name-resolve
- skip-grant-tables
原因是:
- mysql客户端每次访问db,mysql就会试图去解析来访问的机器的hostname,并缓存到hostname cache,如果这时解析不了,等一段时间会失败,数据才能被取过来。
- 2.系统将对任何用户的访问不做任何访问控制
友情提示:重启mysql生效
skip-name-resolve
选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。
若使用–skip-grant-tables系统将对任何用户的访问不做任何访问控制,但可以用 mysqladmin flush-privileges或mysqladmin reload来开启访问控制;默认情况是show databases语句对所有用户开放。
还可参考:http://www.jb51.net/article/27616.htm