3

如何退出无响应的ssh会话

 3 years ago
source link: https://www.lujun9972.win/blog/2018/07/27/%E5%A6%82%E4%BD%95%E9%80%80%E5%87%BA%E6%97%A0%E5%93%8D%E5%BA%94%E7%9A%84ssh%E4%BC%9A%E8%AF%9D/index.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

如何退出无响应的ssh会话

我们都知道,在ssh session中按下 Ctrl-c 或者 Ctrl-z 是不会退出session本身的。

一般都是通过 Ctrl-d 或者 输入 exit 退出shell的方式来退出session,但若由于网络的原因导致整个session挂起怎么办呢? 这个时候ssh server无法对输入任何命令做出响应,难道只能等待session超时退出吗?

通过查看 ssh 的manpage,你会发现,ssh本身是支持escape character的:

Escape 字符
     如果启用了伪终端, ssh 能够通过 escape 字符支持一组功能.

     单独的波浪符可以用 ~~ 送出去, 只要后面不跟下面列举的字符,
     也可以把它直接送出去.  escape 字符必须接在换行(newline)后面,
     这样才具有特别含义.  在配置文件中可以用 EscapeChar 命令更改 escape 字符,
     在命令行上可以用 -e 选项更改.

     已支持的 escape 命令 (假设是默认的 ‘~’) 有:

     ~.      断开连接

     ~^Z     把 ssh 送到后台

     ~#      列出转发的连接 (forwarded connection)

     ~&      当等待转发的连接/X11会话结束时, ssh 在后台退出登录

     ~?      显示 escape 字符的列表

     ~B      发送 BREAK 到远程主机

     ~C      打开命令行 (仅用于 -L , -R 和 -D 选项增加端口转发)

     ~R      请求连接的重建(rekeying) (仅用于SSH协议第二版, 且对方支持)

     ~V      降低错误输出的详细程度

     ~v      提高错误输出的详细程度

     ~~      输入 ~ 本身

所以,要从卡死的ssh session中退出,只需要输入 ~.<RET> 就可以了


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK