锁定时如何破解ssh?


380

我经常从学校在家放到箱子里,但是通常当我换课并且计算机挂起时,管道会坏掉。但是,ssh只是锁定- Ctrl+ cCtrl+ zCtrl+ d无效。

必须重新启动终端很烦人,而不得不关闭并重新创建新的屏幕窗口更令人烦恼。

所以我的问题是,有没有一种简单的方法可以使ssh正确终止(即,当管道“正常”发生故障时,它将退出并显示有关管道损坏的消息)?还是我必须找出PID是什么并手动将其杀死?


如果通过活动的SSH会话断开连接,它将冻结。我只是杀死它并开始一个新的会话。因为我使用GNU屏幕,所以不会丢失任何信息。
Lekensteyn 2011年

我也是-屏幕是最好的。但是,必须如此screen -x:P
Wayne Werner

[mosh](mosh.mit.edu)是避免此问题的一个很好的选择。即使具有间歇性的Internet连接,它也可以“保持连接”。
jaynp 2014年

@jaynp我使用mosh的缺点(因为两分钟前)是我不知道如何断开它。我在远程主机上使用tmux + irssi会话(作为IRC保镖,某种程度上),并且确实想断开连接(同时保持tmux + irssi运行),而我使用<enter> +〜+做过。使用SSH,但无法使用mosh。
帕维尔·西默达(PavelŠimerda)'17年

Answers:


534

普通密钥在ssh会话中转发,因此这些密钥都不起作用。而是使用转义序列。杀当前会话命中随后Enter ↵~.

多种这些转义序列可与列出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

注意,由于命中~~导致ssh发送~而不是拦截它,因此您可以通过命中N次来解决N个嵌套ssh连接。(这仅适用于直接跟随的。)也就是说,终止会话的深度为5层,并保持其他4层不变。~ ~enterenter~~~~~.ssh


48
对于键盘布局,其中~一个死的关键,密钥序列Enter ~ Space .
索伦Løvborg

1
添加了更多可能有用的转义序列。:)
gertvdijk

5
请注意,您需要取消对该行EscapeChar ~/etc/ssh/ssh_config(或者~/.ssh/ssh_config,如果你喜欢)。
Aditya MP

6
@Hitechcomputergeek Enter ~ ~ .由于通过您的SSH会话~ ~发送文字~,因此第二个SSH会话将以单个波浪号的形式接收该文字,并将其解释.为转义的一部分。要发送到第5个嵌套ssh会话,只需在转义序列中使用5个波浪号即可。
2013年

4
生活在改变;)
artm

54

您可能还想为SSH 设置应用程序级保持活动,以防止它因连接问题而冻结。我~/.ssh/config包含:

Host *
ServerAliveInterval 15
# ServerAliveCountMax 3

这使ssh客户端每15秒发送一次应用程序级的keep-alive。每当其中三个连续失败时(默认设置为ServerAliveCountMax),客户端就会将连接视为已挂起并关闭连接。

与其他选项相反TCPKeepAlive,此选项在加密通道中被检查并且不可欺骗。


要注意的是,这些保持活动状态还有助于保持长时间空闲的连接保持活动状态,即防止您小时关闭 tcp会话挂起。

我强烈建议您定期运行此功能,但是您也应该知道它可能带来的轻微安全风险。一个已知明文攻击,如果攻击者知道了间隔和空闲连接的内容可能会变得更加容易。这可能是默认情况下未启用它的原因。


3
安全原因。您可以去喝酒,然后打开ssh sessio,过去20年与您合作的实验室伙伴可能会利用您的会话劫持服务器并销毁它……而您在10分钟的休息时间喝酒。
Luis Alvarado

2
@CYREX,是吗?以及如何通过默认关闭选项来防止您遇到不公平的实验室合作伙伴?%)
ulidtko 2011年

1
@ulidtko:是否有任何不将其设置ServerAliveInterval为1以便立即检测到丢失的连接的原因?
krlmlr

2
@gertvdijk:谢谢。对我来说,即使没有限制,它也能正常工作Host。另外,“诸如高级加密标准之类的现代密码目前不易受到已知明文攻击。” (通过您添加的链接)...
krlmlr 2013年

2
您还可以将Mosh(移动外壳)替换为SSH。Mosh通过SSH连接到服务器,但随后建立了一个基于UDP的通道,该通道可有效抵抗连接问题。Mosh还具有本地回显,因此即使服务器未应答,您也可以看到自己输入的内容。击键交付时,Mosh标记回显的文本。mosh.mit.edu
Pascal Rosin

41

如geekosaur的回答所述,转义序列~.将终止连接。

可以通过键入~?以下内容显示转义序列及其操作的完整列表:

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.)

如何关闭转义序列列表?
kristianp

3
在打印转义序列列表之后,您无需接受下一个列表。
Tejas Kale
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.