SSH接続の「すべてのレベル」を終了しますか? [コピー]

SSH接続の「すべてのレベル」を終了しますか? [コピー]

たとえば、サーバーにSSHで接続した後にいくつかの操作をsudo bash実行するときに、su <user>すべてのシェルをローカル端末に戻す簡単な方法が必要です。

入る

私が仕事をしなければならないとき仕える人〜のようにジム

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

出る

操作は完了しましたが、シェルがログイン状態を維持したくない場合。

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現在のシェルをリストされているコマンドで置き換えます。したがって、exitjimのシェルを終了すると、ルートシェルも終了し、シェルが終了してsudo bash開始した場所に戻ります。

答え2

私が見つけた最も速い方法は、必要なだけCtrl + Dを使用することです。これにより、すべてのbashセッションが終了します。

関連情報