当它锁定时我如何突破ssh?
我经常在家里从学校进入我的盒子,但通常当我改变课程并且我的电脑暂停时,管道将被打破。 但是,ssh只是锁定 – Ctrl + c , Ctrl + z和Ctrl + d无效。
不得不重启我的终端很烦人,甚至更烦人的是必须关闭并重新创建一个新的屏幕窗口。
所以我的问题是,是否有一种简单的方法可以使ssh正常死亡(即当管道“正常”失效时它会退出并显示有关管道损坏的消息)? 或者我必须弄清楚PID是什么并手动杀死它?
普通密钥通过ssh
会话转发,因此这些都不起作用。 而是使用转义序列。 要终止当前会话,请输入↵ , 〜 ,. 。
可以使用Enter↵ , 〜 ,?列出更多这些转义序列。 :
Supported escape sequences: ~. - terminate session ~B - send a BREAK to the remote system ~R - Request rekey (SSH protocol 2 only) ~# - list forwarded connections ~? - this message ~~ - send the escape character by typing it twice (Note that escapes are only recognized immediately after newline.)
您可以通过按Enter键关闭Escape序列列表。
请注意,因为命中~~会导致ssh
发送~
而不是拦截它,所以你可以通过点击~ N次来解决N个嵌套的ssh
连接。 (这只适用于直接跟随输入的 ~ s。)也就是说输入 ~~~~~ 。 终止ssh
会话5层深,并保持其他4完整。
您可能还希望为SSH设置应用程序级保持活动 ,以防止它在连接问题上冻结。 我的~/.ssh/config
包含这个:
Host * ServerAliveInterval 15 # ServerAliveCountMax 3
这使得ssh客户端每15秒发送一次应用程序级别的保持活动。 每当其中三个连续失败时(默认为ServerAliveCountMax
),客户端会将连接视为挂起并关闭它。
与另一个选项TCPKeepAlive
,这是在加密通道中检查的,不是可欺骗的。
值得注意的是,这些保持活动也有助于保持长时间闲置的连接,即防止半封闭的 tcp会话暂停几个小时。
如果您经常遇到此问题,我强烈建议您启用此function,但您也应该了解它可能带来的轻微安全风险。 如果攻击者知道空闲连接的间隔和内容,则已知明文攻击可能变得更容易。 这可能是默认情况下未启用它的原因。
正如geekosaur的回答所述,逃脱序列~.
将终止连接。
可以通过键入~?
来显示转义序列的完整列表及其function~?
:
Supported escape sequences: ~. - terminate connection (and any multiplexed sessions) ~B - send a BREAK to the remote system ~C - open a command line ~R - Request rekey (SSH protocol 2 only) ~^Z - suspend ssh ~# - list forwarded connections ~& - background ssh (when waiting for connections to terminate) ~? - this message ~~ - send the escape character by typing it twice (Note that escapes are only recognized immediately after newline.)