我有一台 CentOS 6-x64 服务器,通过 Windows Server 2012R2 上的 VirtualBox 运行,但每当我通过 SSH 进入它时,它都慢得令人难以忍受。Windows 上的 Putty 和 OS X 上的 SSH 都会发生这种情况。我读过无数关于登录缓慢的帖子,但这只是一种全面的缓慢。
以下是我已检查过的内容:
- 我已禁用 sshd 的 DNS
- 我正在使用同一子网上的 IP 地址进行连接
- 没有大量的流量进出主机
答案1
首先你必须做一些实验和测试:
- 你试过其他协议吗?在 apache/httpd 服务器中留下一些大文件并尝试获取。想法是识别问题出在 SSH 或网络上
- 查看网络接口统计信息。是否有任何错误?
- 尝试 ping。我希望你没有启用数据包过滤。尝试使用大数据包进行 ping:ping -s 1500 some.ip.address 并查看你会得到什么。当你使用标准的小 ping 数据包检查网络时,问题往往被隐藏起来
- 尝试更大的 ping,大约 -s 2000 或 3000 。别担心。最大以太网数据包大小为 1500,但此 ping 将被拆分。您将测试碎片数据包是否可以通过网络正确传输。
- 尝试使用交叉跳线直接连接设备。也许您的以太网交换机已损坏?也许它保留了一些不需要的 MAC 地址,或者已配置为 MAC 地址过滤?
这个问题应该首先问,但我最后问的是:你所说的“SSH 速度慢”是什么意思?连接还是传输?连接时,这可能是 DNS 问题。传输时,通常是网络问题。你有一台 Linux 机器,那么你可以在 Linux 机器上执行 tcpdump。然后你就可以识别出,这是 ssh 服务器或客户端上的 DNS 问题。在客户端,你可以简单地使用服务器 IP 地址来解决客户端的问题,然后你就可以确定是服务器端的问题,服务器端正在尝试反向解析你的 IP 地址,然后再将其写入 ssh 日志文件。如果问题仍然存在,你可以重新配置 ssh 以禁用反向 DNS 解析。但主要思想是修复 DNS 配置并防止对本地 IP 区域进行反向解析。
过去我也遇到过类似的问题。我的 3com 交换机损坏了。在某些情况下,这会产生重复的数据包。固件升级无法解决问题,所以我不得不再买一个。也许你可以暂时借用一些交换机并暂时更换,然后检查一切是否正常。检查不当会移除交换机并直接连接设备。当然,DHCP 服务器将不可用,因此你应该暂时静态定义网络。
祝你好运,我希望这会对你有所帮助。
答案2
由于这在 Google 搜索结果中排名很高,因此我尝试了以下方法。我通过关闭 WiFi 省电模式(在 Linux 上)解决了本地 WiFi 网络上 ssh 缓慢和 ping 延迟过高的问题,但这种方法可能也适用于其他操作系统。
sudo iwconfig wlan0 power off
如果不同,请将 wlan0 替换为您的无线接口名称。您必须通过调整 systemd 或其他配置来使此更改永久生效(例如,参见https://unix.stackexchange.com/questions/269661/how-to-turn-off-wireless-power-management-permanently)