自分のサーバーでsshを実行すると、gnuscreenが自動的に起動します。終わったら、切り離す必要があります。次に、終了してsshを終了します。これは、ある時点で再びサーバーにSSH接続したときに、中断したところから続行できることを意味します。

(たとえば、画面内から)sshをデタッチしてドロップするエイリアスを作成できますか?

コメント

  • screen

回答

をどのように自動起動しますかリモートホスト(ローカルマシンで実行)にログインするときに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セッションを探してください。これでうまくいきます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です