ローカルで tmux を実行し、ssh 経由でリモート マシンに接続できますか? その後、新しいペインや画面をリモート マシン シェルで使用できますか? リモートに tmux をインストールできません。マシンですが、すべてのペインから ssh 接続を行いたくはありませんが、ssh ログインは 1 回だけです。
そのようなことは可能ですか..ありがとう
一度だけログインしたい場合はControlMaster
、sshの機能を利用できます。このような設定をあなたの~/.ssh/config
:に追加してください
ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r
同じサーバーに(同じユーザーとして)複数回(1つのtmuxで)ログインした場合、sshは接続を再利用するため、接続を確立して再度ログインする必要はありません。
lilydjwg は、私が今まで本当に理解できなかったことを説明してくれました。ControlMaster の設定について知っておくと、複数のssh
接続を簡単に作成できるため、次のことがより合理的になります。認証が必要なのは 1 回だけです。リモート ホストでは、接続ごとに sshd プロセスを実行する必要はありません。
あなたの.tmux.conf
ファイルで:
# What host do you usually log in to?
# We'll ssh there by default each time a new window or pane is opened.
REMOTE_HOST=your.usual.host
set-option -g default-command "ssh $REMOTE_HOST"
# Simple interface to change which host is connected to when you create
# a new window or pane.
bind-key C-h command-prompt -p "Set remote host: " -I $REMOTE_HOST "set-option default-command 'ssh %%'"
# In case you really do want a new window with a local shell.
bind-key C new-window ""
できないと思いtmux
ます。1 つの回避策は、次のようなものをtmux.confに追加することです。
bind-key X new-window "ssh HOST"
次に、新しいウィンドウがリモート ホストで開始されます。
tmux 1.8 を使用していますが、組み込みのソリューションが見つかりませんでした。これらの回避策は、少なくとも私の一般的なユース ケースに適合します。
shell-command
場合は、tmuxnew-window
またはsplit-window
コマンドのオプションを使用して、ペインが作成された可能性のあるコマンドを確認します私のreconnect.sh
スクリプトは次のようになります。最も汚いのは、バッファから最後の ssh コマンドを取得する方法です。これまでのところ、私の状況では ssh 接続要求を含む行を確実に検出するには "> ssh " で十分でしたが、より良い解決策があれば幸いです。
#!/bin/bash
# @TODO: change this according to your own prompt
# This is used to find lines connect ssh command in the pane buffer
PROMPT_SEPARATOR="> "
# get current pane buffer size and dimensions
HISTORY_LIMIT=`tmux display-message -p "#{history_limit}"`
VISIBLE_LINES=`tmux display-message -p "#{pane_height}"`
# search last ssh command in pane content
LINE=`tmux capture-pane -p -J -S -$HISTORY_LIMIT -E $VISIBLE_LINES | grep "${PROMPT_SEPARATOR}ssh " | tail -1`
if [ -n "$LINE" ]; then
echo $LINE | sed "s/.*$PROMPT_SEPARATOR//;"
else
# fall back to the command that might have been used to create the pane
# (not necessarily ssh but helpful anyway)
tmux list-panes -F "#{pane_active} #{pane_start_command}" | grep "^1 " | tail -1 | cut -d ' ' -f2-
fi
このスクリプトを ~/.tmux ディレクトリに保存し、さまざまなショートカットのキー バインドを次のように変更split-window
しnew-window
まし.tmux.conf
た。
# try to reconnect to remote host when creating new window
bind c run-shell 'CMD=`~/.tmux/reconnect.sh`; tmux new-window "$CMD"'