로컬 컴퓨터에서 tmux를 사용하고 있으며 일반적으로 동시에 여러 세션이 있습니다.
내가 일반적으로하는 일은 로컬에서 작동하는 다른 창이있는 세션과 세션 당 하나의 호스트에 여러 개의 창을 연결하는 다른 세션입니다.
tmux를 매일 사용하는 경우 세션 / 창 트리는 다음과 같습니다.
(TMUX on my local machine)
|
+- session 1: local
| \_ window 1: local shell
| \_ window 2: local shell
| \_ ...
|
+ session 2: somehost
| \_ window1: ssh user@somehost
| \_ window2: ssh user@somehost
| \_ ...
|
+ session 3: someotherhost
\_ window1: ssh user@someotherhost
\_ window2: ssh user@someotherhost
\_ ...
somehost & someotherhost에서 생성 된 tmux 세션에 연결하는 세션 2 및 세션 3을 일종의 원격 세션으로 만드는 방법이 있습니까?
위의 트리는 다음과 같습니다.
(TMUX on my local machine)
|
+- session 1: local
| \_ window 1: local shell
| \_ window 2: local shell
| \_ ...
|
+ session 2 linked to an existing session on somehost
| \_ window1: shell on somehost
| \_ window2: shell on somehost
| \_ ...
|
+ session 3 linked to an existing session on someotherhost
\_ window1: shell on someotherhost
\_ window2: shell on someotherhost
\_ ...
이 주제를 찾았지만 이것이 내가 원하는 일인지 잘 모르겠습니다. 호스트간에 tmux 소켓을 공유 할 수 있습니까?
내가 찾고있는 것이 로컬 컴퓨터, somehost & someotherhost에서 동일한 tmux 구성을 요구하지만 문제가되지 않는다고 가정합니다.
답변
원격 호스트에 연결할 때 ssh에 명령을 전달할 수 있습니다. 원격 tmux 세션에 연결 하는 -t
옵션을 포함하십시오 tmux attach-session
.
ssh <remote host> -t tmux attach-session
ssh를 통해 tmux 세션 에 연결하는 이 게시물에서는이 를 자세히 설명합니다.
답변
주된 문제가 ssh remotehost
새 창을 열 때마다 입력해야하는 경우 default-command
세션 옵션이 해결 방법 일 수 있습니다.
설정 한 세션에서 새 창을 열 때 지정한 명령이 자동으로 실행됩니다.
간단한 설정 .tmux.conf
:
bind-key C-r new-session ssh remotehost \; set-option default-command "ssh remotehost"
이 키 바인딩 Ctrl-r
은 새로 열린 모든 창이 먼저 ssh remotehost
사용자를 대신하여 실행되는 새 세션을 만듭니다 .
세션을 만들 때 아래 설정으로 연결할 호스트를 선택할 수 있습니다.
bind-key C-r command-prompt "new-session -s %1 ssh %1 \; set-option default-command \"ssh %1\""
이것은 ssh
각 창 생성이 아닌 각 세션 생성에서 수행 할 호스트를 요청 하고 해당 호스트 전용 세션을 시작합니다.
ssh
ssh 구성에서 SSH 멀티플렉싱을 활성화하면 많은 시간이 소요됩니다 . .ssh/config
예는 다음과 같습니다 :
Host remotehost
ControlMaster auto
ControlPath ~/.ssh/mux-%r@%h:%p
ControlPersist 10
이 tmux 설정은 원격 호스트에서 tmux 세션을 생성하지 않습니다. ssh 연결이 끊어지면 영향을받는 tmux 창이 반환되지 않습니다.
답변
socat과 같은 도구를 사용하여 tmux에서 사용하는 유닉스 도메인 소켓을 로컬 시스템으로 터널링 할 수 있습니다. 그러나 실제로 터널 (ssh)을 다른 (socat)으로 교체하기 때문에 실제로 더 좋고 안전하지 않습니다.
답변
원격 쉘에 대해 말하면 명령을 실행할 수 있습니다. 즉, 직접 액세스 할 수 있습니다. 이 경우 ssh
각 원격 창에 간단히 연결을 사용할 수 있습니다 .
다음과 같이 말할 수 있습니다.
“하지만 원격 서버마다 여러 개의 창을 가질 수있는 방법은 없습니다!”
그리고 ssh 제한으로 인해 사실입니다. 그러나 각 또는 원격 서버에서 tmux 세션을 시작할 수 있습니다. 참고 : 이 경우 Ctrl+b
충돌을 방지하기 위해 로컬 컴퓨터에서 기본값을 리 바인드해야합니다 .
또한 사용 tmuxinator
하는 것이 좋습니다. 매일 매일 tmux 세션을 후퇴하는 경우 매우 유용한 도구입니다.