@zphj1987
2016-03-22T00:27:58.000000Z
字数 945
阅读 7655
linux
使用过linux有一定年头的都会知道,在ssh登录的时候会出现反应很慢的情况,这个我也是在2015年左右一次web的ssh远程调用中才发现有这个问题,网上资料有很多,相信很多技术人员都知道是去修改/etc/ssh/sshd_config 中的UseDNS yes 改为 UseDNS no
这个是因为在ssh远程登录到服务器的时候,服务器会反向解析登录的机器的IP的主机名引起的慢的问题,那么我们通过什么办法能定位真的就是这个问题么,这个可以通过抓包的方式来定位,这个地方要感谢 @林沛满 这位大咖带来的定位思路,可以去看下他写的这本书《Wireshark网络分析就这么简单》
在连接的时候需要等待10s左右才提示输入用户名
下面将演示怎样一步一步定位这个问题
需要通过抓包
1. 在Linux服务器上启动抓包
2. 从笔记本SSH到Linux服务器,输入用户名并回车
3. 等待10秒左右,直到登录界面提示输入密码
4. 停止抓包
在linux下安装软件
yum install wireshark wireshark-gnome
在linux下运行wireshark
wireshark
如果出现乱码或者无法运行就下载字体库
yum install liberation-sans-fonts
yum install xauth
选择需要监控的网卡
然后点击绿色的start按钮进入抓包界面
然后在笔记本上ssh连接这个机器,抓取到的数据包如下图:
可以看到:
从上面的过程不难看出,在登录主机的时候进行了DNS的查询,并且两次查询就花费了10s的时间,现在来关闭下这个ssh登录的地方的查询再来看下时间
这次的ssh登录只用了0.1s就返回了,确实是这个问题
技能比知识更重要,这就是例子之一。学会了使用Wireshark,其他知识也会跟着来的-林沛满
本文基于大咖林沛满的分享的做的实践
by-张鹏
2016年03月22日