当 Linux 上的 SSH 连接无响应且按键不起作用时,应采取以下措施。
你可能正在远程SSH会话中输入命令,然后突然什么都不发生了。系统似乎不响应你的按键。你该怎么办呢?
为什么SSH会话会冻结呢?
SSH会话冻结的主要原因是网络连接中断。Wi-Fi信号可能中断,或者你的计算机可能进入睡眠状态。这在使用笔记本电脑时最常见。你可能在忘记你仍然通过SSH登录时关闭笔记本电脑盖子。
SSH最初是在人们普遍使用笔记本电脑之前设计的。SSH在有线网络上的效果更好。
1、使用转义序列终止
如果你的SSH会话冻结,尝试使用一个转义序列。转义序列允许你向SSH客户端发送信号,而不是远程机器。转义序列以转义字符开头。在OpenSSH客户端上,默认情况下是波浪(~)字符。
要退出SSH客户端,你可以按下波浪键,然后是句点(.)键。
如果你希望的话,你也可以更改转义字符。你可以在命令行中使用-e选项指定一个新的转义字符。你还可以通过在本地计算机的家目录的.ssh/config文件中设置EscapeChar选项来永久更改它。
2、使用kill命令
如果使用转义序列不起作用,你可以尝试终止SSH客户端。要查找会话的进程ID(PID),可以通过grep来将ps命令进行管道处理:
ps aux | grep ssh
ps的”aux”参数表示”列出系统上的每个进程,无论它属于谁,或者是否有控制终端。”
如果你有多个会话,你可以通过列出的用户名和SSH会话所登录到的远程机器的地址来找到冻结的会话。一旦找到了会话的PID,你可以使用kill命令终止它:
kill [PID]
对于更好的SSH连接,请使用Mosh!
避免恼人的SSH会话冻结的更好方法是使用Mosh。如果连接中断,Mosh将让你保持连接。当你重新连接时,它将发送任何消息。它还在你的计算机进入睡眠状态时工作。
你还可以使用像GNU Screen或tmux这样的终端复用程序,在任何断开连接后恢复你的SSH会话,但是Mosh和tmux一起使用时更加强大。
要在Debian和Ubuntu上安装Mosh:
sudo apt install mosh
在Arch Linux上:
sudo pacman -S mosh
在红帽系列的发行版上:
sudo dnf install mosh
现在,你可以摆脱卡住的SSH会话了
无响应的SSH会话可能令人沮丧,但你可以使用转义序列或kill命令来终止它们。Mosh是一个更好的替代方法,它将在连接中断和系统休眠时保持你的连接活动。
相关:超级强大!Linux 下 6 个终极 SSH 客户端 https://www.linuxmi.com/linux-6-ssh.html