1. ホーム
  2. ssh

[解決済み] SSHセッションでtmuxを自動的に起動するには?

2022-08-05 08:52:14

質問

私は、定期的に SSH で接続する 10 台ほどのサーバーを持っています。それぞれは、私のローカル コンピュータの ~/.ssh/config ファイルにエントリがあります。

インターネット接続がどうしても切れたときに実行中のプロセスの制御を失わないために、私は常に tmux セッションの中で作業しています。SSH接続が開始されるたびにtmuxが自動的に接続するようにする方法が欲しいです。 tmux attach || tmux new と入力する必要はありません。

残念ながら、これは私が当初期待したほど簡単なことではないことがわかりました。

  • にコマンドを追加したくありません。 ~/.bashrc にコマンドを追加したくありません。なぜなら、ローカル セッションではなく SSH セッションにのみ使用したいからです。
  • 追加する tmux attach || tmux new~/.ssh/rc に変換すると、単にエラーになります。 not a terminal が投げられたとしても、接続後に RequestTTY force オプションがローカルの SSH 設定ファイルのそのサーバーの行に追加されている場合でも、接続後に がスローされます。

どのように解決するのですか?

さて、私はほぼ満足のいく解決策を見つけました。私のローカル ~/.bashrc に、ある関数を書きました。

function ssh () {/usr/bin/ssh -t "$@" "tmux attach || tmux new";}

は、基本的に ssh 端末の関数を上書きして、与えられた引数で組み込みの ssh プログラムを呼び出すようにし、その後に "tmux attach || tmux new" .

(その $@ はコマンドラインで与えられた全ての引数を表しますので ssh -p 123 user@hostname は次のように展開されます。 ssh -t -p 123 user@hostname "tmux attach || tmux new" )

(その -t という引数は RequestTTY Force と同じで、tmuxコマンドに必要です)。