我有一台本地机器和一台 mac osx 服务器(小牛)。
我可以从本地机器在服务器上打开一个 ssh 会话:
user> ssh serveruser@myserver.local
serveruser@myserver>
Run Code Online (Sandbox Code Playgroud)
但是,ssh 连接非常慢。它和我的互联网连接一样慢。到远程服务器的远程 ssh 连接和本地 ssh 连接之间没有区别。每 10-20 秒,我就会出现 1-2 秒的延迟峰值,此时终端没有响应,然后几秒钟后我就会看到我的动作。
我的互联网速度如何影响本地连接?
编辑:@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
Run Code Online (Sandbox Code Playgroud)
我无法启动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...
Run Code Online (Sandbox Code Playgroud)
而且我不能scp,它说:(scp: /home/server_user/: Operation not supported在服务器上启用了远程登录)
这可能适用,也可能不适用,但我将其放在那里是因为我的问题类似,并且我找到了解决方法。
对于进入我的 Mac 的连接(例如 SSH),我遇到了滞后/延迟。例如,我会在 shell(命令行)中输入内容,我的击键可能要等到 200 到 600 毫秒后才会出现,而且它们都会突然出现。这样的事屡屡发生,令人气愤。
在这个论坛帖子中,我读到了
[Apple/OSX is] 关闭数据包之间的无线连接
最终,我开始使用它作为解决方案(在您通过 SSH 连接的同一客户端计算机上运行它):
ssh username@macservername 'while true; do echo -n .; sleep 0.1; done' > /dev/null
Run Code Online (Sandbox Code Playgroud)
这会建立从客户端到 Mac 的网络连接的恒定字节流,欺骗 Mac 不让 wifi 进入睡眠状态。
用如此少的信息很难诊断问题。以下列出了您可以采取的措施来提高正确诊断问题的机会:
记录大文件(例如 1GB)的传输。你可以这样做
time scp largefile remore_user@remote_server:/home/remote_user
Run Code Online (Sandbox Code Playgroud)在此期间您还做其他事情吗?下载某些内容、使用vnc连接、执行密集计算、更新系统或同一 LAN 上的另一个系统?当您通过 ssh 进入远程服务器时,查看多个图形系统监视器之一的输出图片会很有帮助,其中详细显示了任一计算机上的 CPU 使用情况、流量和内存使用情况。
从本地计算机对服务器 IP 地址进行路由跟踪。
查看每个系统的路由表以确保它们位于同一子网中。
检查无线电干扰。在 Linux 中,您可以使用以下命令执行此操作:
sudo iw dev wlan0 scan
Run Code Online (Sandbox Code Playgroud)
这将显示您的 wifi 以及邻近网络的信道和信号强度。
检查客户端和服务器之间的ping时间;
更改加密算法;
详细观察日志记录过程。在服务器上,您需要不以守护进程模式启动 ssh,而是以调试模式启动:
/usr/sbin/sshd -Dd
Run Code Online (Sandbox Code Playgroud)
在客户端时
ssh -vvv remote_user@remote_server
Run Code Online (Sandbox Code Playgroud)
检查是否有异常情况。
上述任何一项都可能提供有用的见解。我确信比我更聪明的人能够将支票添加到这个相同的列表中。