Linux/UNIX杀死无响应的挂起SSH会话

时间:2020-01-09 10:42:55  来源:igfitidea点击:

如何在不终止本地终端或者不使用kill命令的情况下正确终止挂起的SSH会话?
如何在macOS上终止无响应的挂起SSH会话?
如果Internet或者Intranet连接中断,则SSH会挂起。
这是正常现象,可能会轻度激怒。
但是,ssh连接附带转义字符支持。
在ssh命令手册页中:

当请求了伪终端时,ssh通过使用转义符来支持许多功能。
可以将单个波浪号字符作为~~发送,也可以在波浪号后跟随除以下所述字符之外的其他字符。
转义字符必须始终跟随换行符才能被解释为特殊字符。
支持的转义符(假设默认为~)为:~。
断开。

macOS,Linux/UNIX终止无响应的挂起SSH会话

因此,您要做的就是按Enter键,然后按~.
(波浪号,句点)。

"请注意,转义仅在换行符后立即被识别"。
因此,我们需要按Enter键。
我在不关闭终端的情况下杀死了无响应的ssh会话

SSH转义字符列表

ESCAPE特性描述
~.
~^ Z背景ssh。
~#列出转发的连接。
~&注销ssh时等待转发的连接/X11会话终止。
~?显示转义字符列表。
~B向远程系统发送BREAK(仅在对等方支持时才有用)。
~C打开命令行。当前,这允许使用-L,-R和-D选项添加端口转发(请参见上文)。它还允许使用-KL [bind_address:]端口(对于本地),-KR [bind_address:]端口(对于远程)和-KD [bind_address:]端口(对于动态端口转发)取消现有的端口转发。如果在ssh_config(5)中启用了PermitLocalCommand选项,则!command允许用户执行本地命令。使用-h选项可获得基本帮助。
~R请求连接的密钥更新(仅在对等方支持时才有用)。
~V将错误写入stderr时,降低详细程度(LogLevel)。
~v将错误写入标准错误时,增加详细程度(LogLevel)。

Mosh

Mosh是一个免费的开源ssh客户端,其追加功能旨在提高移动用户的可用性。

Mosh即使在漫游时也保持ssh会话。
换句话说,当客户端端点更改为不同的IP地址时(例如,通过移动到其他Wi-Fi网络)或者从Wi-Fi更改为3G/4G LTE时。
您将保持登录状态。
大多数网络程序在漫游后都会失去连接,包括SSH和Web应用程序(例如Gmail)。
莫什不同。
它是一个完美的ssh客户端,无需终止无响应的挂起SSH会话。

安装

使用apt-get命令或者apt命令,如下所示:

$ sudo apt install mosh

Alpine Linux用户尝试使用dnf命令:

$ sudo dnf install mosh

OpenSUSE Linux用户尝试zypper命令:

$ sudo zypper in mosh

MacOS用户尝试使用NA命令或者端口命令:* BSD用户运行pkg命令/pkg_add命令以安装相同命令:

# pkg install net/mosh # FreeBSD
# pkg_add mosh # OpenBSD
$ brew install mosh