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

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

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

评论

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

我也是-屏幕是最好的。但是必须屏蔽-x:P
仍然很烦人
[mosh](mosh.mit.edu)是避免此问题的一个很好的选择。即使具有间歇性的Internet连接,它也可以“保持连接”。

@jaynp我使用mosh的缺点(因为两分钟前)是我不知道如何断开它。我在远程主机上使用tmux + irssi会话(作为IRC保镖,某种程度上),但我确实想断开连接(同时保持tmux + irssi运行),而我使用 +〜+做过。使用SSH,但不能使用mosh。

#1 楼

普通密钥通过ssh会话转发,因此这些密钥都不起作用。而是使用转义序列。要终止当前会话,请随后按↵,〜,..

(请记住,在国际键盘中,~被设置为一个组成字符,您必须按两次:输入↵,〜 ,〜,。

可以使用Enter sequences,〜,?列出更多这些转义序列:

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
     ~V/v - decrease/increase verbosity (LogLevel)
     ~^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.)


您可以关闭列表

请注意,由于点击~~导致ssh发送~而不是拦截它,因此您可以通过点击〜N次来寻址N个嵌套的ssh连接。(这仅适用于也就是说,enter ~~~~~。将ssh会话终止于5层深度,并保持其他4层完好。

评论


对于〜是死键的键盘布局,其键序为Enter〜Space ..

–SørenLøvborg
2012年11月20日12:55



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

– Gertvdijk
13年1月19日在17:08

请注意,您需要取消注释/ etc / ssh / ssh_config中的EscapeChar〜行(如果需要,也可以取消注释〜/ .ssh / ssh_config)。

– Aditya M P
13年8月3日在6:19

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

–Score_Under
16-4-9的23:41

生活在改变;)

–artm
17 Mar 17 '17 at 0:11

#2 楼

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

Host *
ServerAliveInterval 15
# ServerAliveCountMax 3


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


要注意的是,那些保持活动状态还有助于保持长时间空闲的连接保持活动状态,即防止您半小时关闭tcp会话挂起。 br />
我强烈建议您定期运行此功能,但是您也应该知道它可能带来的轻微安全风险。如果攻击者知道空闲连接的间隔和内容,则已知明文攻击可能会变得更加容易。这可能是默认情况下未启用它的原因。

评论


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

–路易斯·阿尔瓦拉多(Luis Alvarado)
2011年3月11日19:16

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

– ulidtko
2011年3月11日21:31

@ulidtko:是否有理由不将ServerAliveInterval设置为1,以便立即检测到丢失的连接?

– krlmlr
13年1月19日在8:01

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

– krlmlr
13年1月19日在22:32

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

–帕斯卡·松香
14-10-15在13:32

#3 楼

如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
13-10-18在22:19

在打印转义序列列表后,您无需准备接受下一个。

– Tejas Kale
17 Mar 24 '15:15