自分のサーバーでsshを実行すると、gnuscreenが自動的に起動します。終わったら、切り離す必要があります。次に、終了してsshを終了します。これは、ある時点で再びサーバーにSSH接続したときに、中断したところから続行できることを意味します。
(たとえば、画面内から)sshをデタッチしてドロップするエイリアスを作成できますか?
コメント
回答
をどのように自動起動しますかリモートホスト(ローカルマシンで実行)にログインするときにscreen
を開始する:
ssh -t user@host screen
画面内リモートホスト上のセッションで、デタッチしてログアウトします(これにより、制御ソケットを使用した永続的な接続を使用していない限り(つまり、ControlMaster
設定を
in ~/.ssh/config
)):
screen -d
後で、ログインします
ssh -t user@host screen -r
-t
と、疑似端末の割り当てを強制し、この方法でscreen
を開始します。
リモートホストのエイリアスはfになります。またはscreen -d
、おそらくdetach="screen -d"
など
ローカルホストに、セクションを含めることができます。 ~/.ssh/config
ファイルの内容
Host *-screen RequestTTY force RemoteCommand screen -d -R Host myhost myhost-screen HostName myhost.somedomain.example.com User myname
その後、使用するときはいつでも
ssh myhost-screen
screen
セッションは、指定されたホスト上に作成(または再接続)されますが、
ssh myhost
screen
を使用しません。
注:RemoteCommand
はOpenSSH7.6(2017 -10-03)。
tmux
の場合:
-
tmux new-session -A -s "%n"
<を使用しますscreen -d -R
の代わりに~/.ssh/config
の/ div>。 - プレフィックス を使用します。 d または
tmux detach-client
またはtmux detach
を切り離します。
コメント
- いいですね、thx。家ではこれはうまくいくでしょう。 '強制的な疑似tty割り当て'について知りませんでした。これをテストしましたが、機能します。
回答
screenコマンドを実行して、画面を呼び出したり作成したりするとき、 の後に、親シェルのkillを追加すると、ssh接続が強制終了されます。
親がbashの場合に親プロセスを強制終了する例
kill $( ps -ax -o pid,ppid,args | grep "^$$ " | grep bash | awk "{print $2} " )
コメント
- Thx。実行するアプリを指定できない場所(online ssh app.shellngn.com など)からSSHで接続し、コード行を次のように変更した場合sshセッションを探してください。これでうまくいきます。
screen