共计 1729 个字符,预计需要花费 5 分钟才能阅读完成。
centos 如何解决 ssh 连接慢和 ping 响应慢的问题?现在连接 linux 服务器一般都是使用 SSH 远程连接的方式。最近新装了一台服务器,发现 telnet 时速度很快,ping 服务器 ip 的时候一切也正常,但 SSH 连接的时候却很慢,还有在服务器内部 ping 百度反应也慢,要停顿好几秒才会出现 ping。
经过网上资料查询,大致是有以下几种原因:
1、SERVER 的 SSHD 会去 DNS 查找访问的 CLIENT IP 的 HOSTNAME,如果 DNS 不可用或者没有相关记录,就会消耗一段时间。
2、在 authentication gssapi-with-mic 有时候也会消耗一段时间
一、测试查找具体原因:
1、使用 ssh -v host 进行 debug
# ssh -v 192.168.100.10
然后就会输出一大堆 debug,通过 debug 信息就可以看到连接到什么地方被耽搁了
比如会显示如下信息:
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
No credentials cache found
2、检测连接时间
# time ssh root@192.168.100.10 exit
二、解决方法(建议一个个设置,因为每个人连接慢的原因都不一样):
注意:修改之后记得重启 sshd 服务
# service sshd restart
1、关闭 DNS 反向解析
在 linux 中,默认就是开启了 SSH 的反向 DNS 解析, 这个会消耗大量时间,因此需要关闭。
# vi /etc/ssh/sshd_config
UseDNS=no
在配置文件中,虽然 UseDNS yes 是被注释的,但默认开关就是 yes
2、关闭 SERVER 上的 GSS 认证
在 authentication gssapi-with-mic 有很大的可能出现问题,因此关闭 GSS 认证可以提高 ssh 连接速度。
# vi /etc/ssh/sshd_config
GSSAPIAuthentication no
3、修改 server 上 nsswitch.conf 文件
# vi /etc/nsswitch.conf
找到:
hosts:files dns
改为:
hosts:files
hosts:files dns 这一行含义是对于访问的主机进行域名解析的顺序,是先访问 file,也就是 /etc/hosts 文件,如果 hosts 中没有记录域名,则访问 dns,进行域名解析,如果 dns 也无法访问,就会等待访问超时后返回,因此等待时间比较长。
注意:如果 SERVER 需要通过域名访问其他服务器,则需要保留此行。
4、修改 SERVER 上 resolv.conf 文件
4.1、删除 /etc/resolv.conf 中所有不使用的 IP。
4.2、把 nameserver 全部删除,问题也能解决,但是服务器就无法上网了。
4.3、如果 SERVER 曾经配置过双网卡,则在该文件中会有一行目前不使用的 IP 地址,删除该行即可。
5、修改 SERVER 上 hosts 文件
在 SERVER 上 /etc/hosts 文件中把客户端的 IP 和 HOSTNAME 加入
6、打开 SERVER 上的 IgnoreRhosts 参数
IgnoreRhosts 参数可以忽略以前登录过主机的记录,设置为 yes 后可以极大的提高连接速度
# vi /etc/ssh/sshd_config
IgnoreRhosts yes
——————– 以上的均在 SERVER 上设置,以下的均在 CLIENT 上设置 ———————–
7、修改客户端的 hosts 文件
将目标 SERVER 的 IP 和域名加上去, 使得本机的 DNS 服务能解析目标地址。
# vi /etc/hosts
192.168.100.1 www.wanqutv.com
注:hosts 文件格式为 ’ 目标 SERVER_IP 目标 SERVER_NAME’。但是使用这个方法有一个弊端,如果需要给每台 SERVER 都添加一个域名解析。
8、修改客户端配置文件 ssh_conf(注意,不是 sshd_conf)
# vi /etc/ssh/ssh_conf
找到:
GSSAPIAuthentication yes
改为:
GSSAPIAuthentication no