退出 SSH 连接的“所有级别”?

退出 SSH 连接的“所有级别”?

例如,当我通过 SSH 连接到服务器然后sudo bash再做su <user>一些工作时,我想要一种快速方法将所有 shell 退出回本地终端。

进去

当我必须做一些工作时服务器作为吉姆

local > ssh me@server
server:me > sudo bash
server:root > su jim
server:jim > // do stuff as jim

出去

当我的工作完成但我不想让 shell 保持登录状态时。

server:jim > exit
server:root > exit
server:me > exit
local > // after 3 commands

首选出路

我想这样做。

server:jim > exitall // for example
local > // after one command

答案1

如果您愿意采用主动(相对于追溯)解决方案,请考虑使用exec您想要绕过的中间步骤:

进入(修改):

local > ssh me@server
server:me > exec sudo bash
server:root > exec su jim
server:jim > // do stuff as jim

出去

server:jim > exit
local > // after 1 command

使用exec列出的命令替换当前的 shell;因此,当您exit退出 jim 的 shell 时,您的 root shell 也会退出,这会导致 shellsudo bash退出,让您回到开始的地方。

答案2

我发现最快的方法是根据需要多次使用 Ctrl + D,这将终止每个 bash 会话

相关内容