如何退出无响应的 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>
就可以了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论