我可以连接或查看废弃的ssh会话吗?


14

我有一个运行的Redhat虚拟实例,可以ssh从公司网络上的任何主机上运行该实例。ssh运行某些可能导致我断开连接的脚本时,我的会话已断开。该who命令在本地仍然列出删除的连接。重新连接ssh开始一个全新的会话。有没有办法连接到原始会话?如果不能,我可以杀死它吗?我具有root和物理访问权限。我在原始会话中没有使用屏幕。

Answers:


11

您想使用遥控器上的屏幕,然后在重新登录时重新连接到该屏幕实例。

但是不,您不能自行重新连接到ssh会话,而必须使用屏幕(或类似的东西来简化此操作)。

请查看此问题,以了解至少一个其他选项以及它(tmux)和屏幕之间的一些区别。看完这个问题的答案之后...我实际上会说tmux更好

哦,是的,您可以kill阻止该进程(包括分叉的bash),您可以尝试skill按名称杀死该用户,但是我怀疑该用户是否是root用户...它可能会尝试杀死无法消除的事物。

答案已更新过几次


4

默认情况下,您无法重新连接到废弃的ssh会话。但是,您可以在ssh会话中设置进程,您可以在重新建立新的ssh会话后重新连接到该进程。

您要使用的屏幕是屏幕,或者甚至更好的是称为byobu的屏幕周围的用户友好包装器。

屏幕允许您在同一ssh会话中运行多个虚拟终端会话。提供了教程帮助页面

byobu是一个包装器,可以使用简单的功能键而不是ctrl-a的组合键轻松打开新屏幕。它还显示一个状态行,其中包含所有可以打开的虚拟终端。

另一个不错的功能是,当ssh连接断开时,您的所有屏幕都可以停滞不动。您只需通过ssh再次连接并致电byobu,一切便像以前一样。

最后是byobu的一些屏幕截图


3

如前所述,屏幕可能是您最好的选择。如果/当您的会话被删除时,它将继续运行。输入“ screen -list”以查看可用的会话,并输入“ screen -r”与所需的会话。一个小技巧,您可以使用Tab键完成会话字符串,而不用复制/粘贴整个内容。

但是,屏幕可能很烦人。在我的客户端中,您无法轻松向上滚动以在控制台中查看历史记录。它的行为与您预期的有所不同。如果您只想确保长时间运行的进程不会被杀死,请使用“ nohup”。当您失去连接时,它将防止您的proc被关闭。但是,如果要监视它,请确保将proc输出发送到文件。另外,如果您有bash脚本,我认为您需要在nohup前面显式调用“ bash”。一个例子...

nohup bash ./myscript.sh> output.log 2>&1&

这意味着nohup,以防止杀死proc,如果脚本中包含bash特定内容,bash会显式调用bash,脚本在当前目录中称为“ myscript.sh”,output.log作为文件发送标准输出和错误输出,最后以“&”号在后台运行proc。

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.