摘自:https://blog.csdn.net/asd2479745295/article/details/83006379
linux下ssh连接缓慢详解
原创皮的开心 最后发布于2018-10-11 09:13:37 阅读数 1824 收藏
展开
最近发现公司新linux控制器使用ssh连接特别慢,大概要10秒钟左右,scp也是需要10秒左右,但是ping速度特别快。使用ssh -l IP -v 可以查看连接卡在,SSH2_MAG_SERVICE_ACCEPT received后,停顿了一会才执行下面的操作。在网上查资料看到有以下几种解决方式。
1、在server上/etc/hosts文件中把你本机的ip和hostname加入
2、在server上/etc/ssh/sshd_config文件中修改或加入UseDNS=no,另外在authentication gssapi-with-mic也有可能出现问题,在server上/etc/ssh/sshd_config文件中修改GSSAPIAuthentication no.
3、修改server上/etc/nsswitch.conf中hosts为hosts: files
4、reboot server使配置生效
/etc/init.d/sshd restart重启sshd进程使配置生效。
第一种感觉只适合自己用,总不能换一台电脑连接,就要加入新的ip和hostname吧,第二种我这边的机器上默认的就有,所以不是这个问题,第三种在我这边文件里是hosts : files dns ,就是说解析一个域名时,先会找/etc/hosts文件,如果/etc/hosts文件没有对应,才会去找DNS,所以第三种方法就是不让系统去找DNS。对于第三种操作因为默认是是查找DNS的,在/etc/ssh下有两个文件,ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于,前者是针对客户端的配置文件,后者则是针对服务端的配置文件。两个配置文件都允许你通过设置不同的选项来改变客户端程序的运行方式。还可以通过在sshd_config中添加UseDNS no实现第三种方式,然后重启ssh,发现ssh连接速度就很快了。
但是为什么让系统去找DNS的时候会有问题,感觉根本的问题没有找到。然后就去研究了一下系统里面关于DNS配置的情况,有三个优先级:
HOST 本地DNS解析 > 网卡配置文件DNS服务地址 > 系统默认DNS配置
1.HOST 本地DNS解析
vi /etc/hosts
添加规则 例如:
223.231.234.33 www.baidu.com
也就是上面第一种方法为什么会有用,因为如果其他优先级DNS配置有问题也首先会执行本地解析,然后我这边机器hosts文件是空的,所以排除。
2.网卡配置文件DNS服务地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
添加规则 例如:
DSN1='114.114.114.114'
不同的机器可能路径不同,我这边的也没问题所以排除。
3.系统默认DNS配置
vi /etc/resolv.conf
添加规则 例如:
nameserver 114.114.114.114
然后我发现我这边的文件里写的是 nameserver 8.8.8.8,8.8.8.8是google提供的免费DNS服务器的IP地址,而我这边没有联网,所以有问题,改成nameserver 127.0.0.1即可,不需要在关闭DNS。
总结:有时候找到的解决问题的办法只是基于表面的,所以最好深究一下。
————————————————
版权声明:本文为CSDN博主「皮的开心」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/asd2479745295/article/details/83006379