10

ローカルで tmux を実行し、ssh 経由でリモート マシンに接続できますか? その後、新しいペインや画面をリモート マシン シェルで使用できますか? リモートに tmux をインストールできません。マシンですが、すべてのペインから ssh 接続を行いたくはありませんが、ssh ログインは 1 回だけです。

そのようなことは可能ですか..ありがとう

4

4 に答える 4

6

一度だけログインしたい場合はControlMaster、sshの機能を利用できます。このような設定をあなたの~/.ssh/config:に追加してください

ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r

同じサーバーに(同じユーザーとして)複数回(1つのtmuxで)ログインした場合、sshは接続を再利用するため、接続を確立して再度ログインする必要はありません。

于 2012-05-15T17:40:11.070 に答える
5

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 ""
于 2012-05-27T02:39:09.713 に答える
3

できないと思いtmuxます。1 つの回避策は、次のようなものをtmux.confに追加することです。

bind-key X new-window "ssh HOST"

次に、新しいウィンドウがリモート ホストで開始されます。

于 2012-05-10T15:53:16.810 に答える
0

tmux 1.8 を使用していますが、組み込みのソリューションが見つかりませんでした。これらの回避策は、少なくとも私の一般的なユース ケースに適合します。

  • ペインの内容全体をキャプチャし、その中の最後の ssh コマンドを検索します (プロンプトの終了に関する知識を使用して、多かれ少なかれ確実にコマンドを検出します)。
  • これが失敗した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-windownew-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"'
于 2013-11-16T19:11:17.760 に答える