如何在缓慢/不稳定的连接上使用ssh?


20

我正在处理一个非常慢的外壳连接。它在云中,离服务器很远。我的连接有时也会断开,因为它是通过Internet进行的,并且我可能也在使用共享的Wifi或3G。有没有办法查看我立即输入的内容?尝试键入命令并等待每个字符都是残酷的。


4
使用“屏幕”使会话保持活动状态,以便在断开连接时可以重新连接。
Konerak 2013年

Answers:


24

尝试Mosh

Mosh(移动外壳)
远程终端应用程序,它允许漫游,支持间歇性连接并提供智能的本地回显和用户按键的线路编辑。

Mosh替代了SSH。它更加健壮和响应迅速,尤其是在Wi-Fi,蜂窝和长途链路上。

Mosh是免费软件,可用于GNU / Linux,FreeBSD,Solaris,Mac OS X和Android。


3
警告:(1)与SSH相比,CPU占用更多的资源。(2)如果您的mosh会话无法正常结束,则您将拥有无法重新建立的泄漏连接。(我必须清理我的外壳盒,否则将运行数十个进程)。
user606723 2013年

另一个问题是,几乎不可能在Suse(SLES)之类的Linux发行版上进行安装。我花了几个小时尝试将其安装为openSuse软件包或从源代码进行编译。
僵尸

$ sudo zypper in mosh(根据文档)
dmourati

是的,在openSuse上可以很好地工作,但是对于公司/封闭发行版,要安装新的开源项目是非常艰巨的任务。
僵尸2013年

10

另一种(也是除),以dmourati答案:使用screentmux或其他东西,以保持会话的活动,当你断开。(重新连接后,您只需简单地重新连接到会话,即使使用全屏程序[vi等],也可以在离开终端时查看终端)。它还具有许多其他好处(与同事共享会议等)(如Mosh自己的常见问题所述:

问:为什么终端的回滚缓冲区不完整?

Mosh 1.2仅同步终端的可见状态。Mosh 1.3将具有完整的回滚支持;看到此问题以及从那里链接的其他问题。目前,解决方法是在远程使用screen或tmux。

而且,您还应该使用rsync复制文件的方式,而不必在连接中断时通过网络重新发送已发送的零件。


2

您应该看到延迟/瓶颈所在的位置。您应该尝试更好地访问本地或基础架构上的基础架构。你换你重要或关键的会议中tmuxscreen多路复用器...

请给我们号码。简单的SSH会话需要花费特别糟糕的连接才能出现问题...我不得不从飞机上通过VPN 访问世界另一端的系统,但仍然没有太多麻烦。这是一个长期的问题吗?是什么traceroute告诉你吗?


旅馆wifi上经常出现此问题,那里的路由器太少,共享互联网访问的设备/笔记本电脑太多。另外,共享酒店的wifi本质上对ping的时间很不了解,因为穿过1面或更多面墙确实会增加很多ms延迟。这也是另一个主要瓶颈。在3G上也发生了类似的情况,到手机塔这么远的距离增加了MS。使用SSH Shell时,我必须等待每个字符。MS为200-400可能会很烦人,但峰值可能长达1秒...哎呀。
僵尸

1

对于以后使用该线程的读者,@ lowellheddings在其博客中的技巧以及screen的使用可以帮助解决此问题:

您可以将ssh客户端配置为每隔几秒钟自动发送一个协议无操作码代码,以使服务器不会断开您的连接。在其他客户端中,此设置有时也称为“保持活动”或“停止如此断开连接”。
将以下行添加到/ etc / ssh / ssh_config文件:
ServerAliveInterval 60
...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.