我有一台本地机器和一台 mac osx 服务器(mavericks)。
我可以从本地机器在服务器上打开 ssh 会话:
user> ssh [email protected]
serveruser@myserver>
但是,ssh 连接非常慢。它和我的互联网连接一样慢。远程 ssh 连接到远程服务器和本地 ssh 连接之间没有区别。每隔 10-20 秒,我就会遇到 1-2 秒的延迟峰值,此时终端没有响应,然后几秒钟后我才能看到我的操作。
这个本地连接会受到我的网速的影响吗?
- 注意:使用屏幕共享时,质量和延迟非常差,所以我可能会遇到同样的问题(连接通过互联网而不是本地)
- 注2:两台机器通过wifi连接到路由器。如果我将文件从一台机器复制到另一台机器,速度约为20MB/s。所以本地连接相当好。
编辑:@MariusMatutiae 建议的一些测试:
# very inconsistent ping times.
➜ ~ ping 10.0.0.34
PING 10.0.0.34 (10.0.0.34): 56 data bytes
64 bytes from 10.0.0.34: icmp_seq=0 ttl=64 time=142.699 ms
64 bytes from 10.0.0.34: icmp_seq=1 ttl=64 time=571.248 ms
64 bytes from 10.0.0.34: icmp_seq=2 ttl=64 time=193.275 ms
64 bytes from 10.0.0.34: icmp_seq=3 ttl=64 time=211.617 ms
64 bytes from 10.0.0.34: icmp_seq=4 ttl=64 time=28.381 ms
64 bytes from 10.0.0.34: icmp_seq=5 ttl=64 time=337.638 ms
64 bytes from 10.0.0.34: icmp_seq=6 ttl=64 time=78.221 ms
64 bytes from 10.0.0.34: icmp_seq=7 ttl=64 time=100.819 ms
64 bytes from 10.0.0.34: icmp_seq=8 ttl=64 time=11.514 ms
64 bytes from 10.0.0.34: icmp_seq=9 ttl=64 time=141.167 ms
64 bytes from 10.0.0.34: icmp_seq=10 ttl=64 time=166.168 ms
^C
--- 10.0.0.34 ping statistics ---
11 packets transmitted, 11 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 11.514/180.250/571.248/150.814 ms
# trying google for comparison
➜ ~ ping www.google.com
PING www.google.com (173.194.113.176): 56 data bytes
64 bytes from 173.194.113.176: icmp_seq=0 ttl=52 time=28.173 ms
64 bytes from 173.194.113.176: icmp_seq=1 ttl=52 time=65.306 ms
64 bytes from 173.194.113.176: icmp_seq=2 ttl=52 time=33.831 ms
64 bytes from 173.194.113.176: icmp_seq=3 ttl=52 time=24.287 ms
64 bytes from 173.194.113.176: icmp_seq=4 ttl=52 time=24.642 ms
64 bytes from 173.194.113.176: icmp_seq=5 ttl=52 time=36.327 ms
64 bytes from 173.194.113.176: icmp_seq=6 ttl=52 time=26.143 ms
64 bytes from 173.194.113.176: icmp_seq=7 ttl=52 time=25.572 ms
^C
--- www.google.com ping statistics ---
8 packets transmitted, 8 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 24.287/33.035/65.306/12.878 ms
# traceroute seems direct
➜ ~ traceroute 10.0.0.34
traceroute to 10.0.0.34 (10.0.0.34), 64 hops max, 52 byte packets
1 10.0.0.34 (10.0.0.34) 150.568 ms 4.263 ms 2.603 ms
我无法启动sudo /usr/sbin/ssd -Dd
,错误是:
绑定到端口 22 上::失败:地址已在使用中。无法绑定任何地址。
$> sudo lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
launchd 1 root 34u IPv6 0xb1ed5bcf5a84.... 0t0 TCP *:ssh (LISTEN)
launchd 1 root 35u IPv4 0xb1ed5bcf5a84.... 0t0 TCP *:ssh (LISTEN)
$> sudo kill 1 # machine restarts. I'm not a smart man...
我无法 scp,它说:(scp: /home/server_user/: Operation not supported
服务器上已启用远程登录)
答案1
这可能适用也可能不适用,但我把它放在那里是因为我的问题类似,而且我找到了解决方法。
对于连接进入在我的 Mac 上(例如 SSH),我遇到了延迟。例如,我在 shell(命令行)中输入内容,我的按键要等到 200 到 600 毫秒后才会出现,而且它们会突然全部出现。这种情况一直都在发生,令人恼火。
在此论坛主题,我读到
[Apple/OSX] 在数据包之间关闭无线
最终,我决定使用这个作为解决方案(在进行 SSH 的同一台客户端计算机上运行此程序从):
ssh username@macservername 'while true; do echo -n .; sleep 0.1; done' > /dev/null
这会建立从客户端到 Mac 通过网络连接流动的恒定字节流,从而诱使 Mac 不让 Wi-Fi 进入睡眠状态。
答案2
仅凭如此少的信息很难诊断出问题。以下是您可以采取的一些措施,以提高正确诊断问题的可能性:
记录大文件(例如 1GB)的传输。你可以这样做
time scp largefile remore_user@remote_server:/home/remote_user
你现在还在做其他事情吗?下载某些东西,使用虚拟网络连接、执行密集计算、更新系统或同一 LAN 上的其他系统?查看一些图形系统监视器的输出图片会很有帮助,这些监视器详细说明了任一机器上的 CPU 使用率、流量和内存使用情况,作为您正在通过 ssh 连接到远程服务器。
从本地机器对服务器 IP 地址进行跟踪路由。
查看每个系统的路由表以确保它们位于同一子网。
检查无线电干扰。在 Linux 中,您可以使用以下命令执行此操作:
sudo iw dev wlan0 scan
这将显示您的 WiFi 以及邻近网络的信道和信号强度。
查看平客户端和服务器之间的时间;
改变加密算法;
详细观察日志记录过程。在服务器上,您需要启动 ssh不是处于守护进程模式,但在调试模式下:
/usr/sbin/sshd -Dd
在客户端上
ssh -vvv remote_user@remote_server
检查是否有任何异常。
以上任何一项都可能提供有用的见解。我相信比我更聪明的人能够将检查添加到同一列表中。