[关闭]
@zphj1987 2016-03-21T16:27:58.000000Z 字数 945 阅读 7532

Linux的ssh为什么卡住了?

linux


使用过linux有一定年头的都会知道,在ssh登录的时候会出现反应很慢的情况,这个我也是在2015年左右一次web的ssh远程调用中才发现有这个问题,网上资料有很多,相信很多技术人员都知道是去修改/etc/ssh/sshd_config 中的UseDNS yes 改为 UseDNS no
这个是因为在ssh远程登录到服务器的时候,服务器会反向解析登录的机器的IP的主机名引起的慢的问题,那么我们通过什么办法能定位真的就是这个问题么,这个可以通过抓包的方式来定位,这个地方要感谢 @林沛满 这位大咖带来的定位思路,可以去看下他写的这本书《Wireshark网络分析就这么简单

问题现象:

sshhung.png-13.1kB

在连接的时候需要等待10s左右才提示输入用户名

下面将演示怎样一步一步定位这个问题

需要通过抓包
1. 在Linux服务器上启动抓包
2. 从笔记本SSH到Linux服务器,输入用户名并回车
3. 等待10秒左右,直到登录界面提示输入密码
4. 停止抓包

在linux下安装软件

  1. yum install wireshark wireshark-gnome

运行抓包软件

在linux下运行wireshark

  1. wireshark

如果出现乱码或者无法运行就下载字体库

  1. yum install liberation-sans-fonts
  2. yum install xauth

选择需要监控的网卡
jiemian.png-87.3kB

然后点击绿色的start按钮进入抓包界面

然后在笔记本上ssh连接这个机器,抓取到的数据包如下图:
dns.png-146kB

可以看到:

从上面的过程不难看出,在登录主机的时候进行了DNS的查询,并且两次查询就花费了10s的时间,现在来关闭下这个ssh登录的地方的查询再来看下时间
resule.png-108.3kB

这次的ssh登录只用了0.1s就返回了,确实是这个问题

技能比知识更重要,这就是例子之一。学会了使用Wireshark,其他知识也会跟着来的-林沛满

本文基于大咖林沛满的分享的做的实践

by-张鹏
2016年03月22日

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注