Adjunte una sesión tmux a una máquina remota


31

Estoy usando tmux en mi máquina local y generalmente tengo varias sesiones simultáneamente.

Lo que generalmente hago es tener una sesión con diferentes ventanas para trabajar localmente y las otras sesiones en las que conecto varias ventanas a un host por sesión.

Un árbol de sesión / ventana se vería así en el uso diario que hago de 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
    \_ ...

¿Hay alguna manera de hacer que la sesión 2 y la sesión 3 sean algún tipo de sesión remota que se conecte a una sesión tmux creada en somehost y someotherhost?

El árbol de arriba se vería así:

(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
    \_ ...

Encontré este tema pero no estoy seguro de que esto sea lo que quiero hacer: ¿es posible compartir un socket tmux entre hosts?

Supongo que lo que estoy buscando requeriría que tenga la misma configuración tmux en mi máquina local, algún host y otro host, pero eso no sería un problema.


¿Has encontrado una solución para esto? Creo que tener una sesión remota que puedes administrar como si fuera local es una gran idea, pero parece que la respuesta más votada no es realmente tu pregunta
mbigras

Respuestas:


18

Puede pasar un comando a ssh cuando se conecta a un host remoto. Incluya la -topción con tmux attach-sessionpara conectarse a la sesión remota de tmux:

ssh <remote host> -t tmux attach-session

Esta publicación sobre cómo adjuntar una sesión tmux a través de ssh lo explica con más detalle.


18
¿No te da esto una sesión anidada? Creo que lo que el OP está tratando de hacer es que la sesión remota aparezca junto a su sesión local para que puedan navegar dentro de la ventana de elección / árbol de selección de un tmux.
stsquad

Si hay más de una sesión adjunta en el host remoto, puede usar: ssh <host remoto> -t tmux a -t <nombre-sesión>
usuario1757247

Hice algunas ediciones para solucionar un problema que encontré y paso a paso. Esperemos que la revisión por pares termine pronto. Esto funcionó ssh <remote host> -t /path/to/tmux a -t <my-session-name>, necesitaba un extra-t
Merlin

Tengo la misma pregunta que el OP. Esto no responde mi pregunta. Crea una sesión tmux anidada donde tengo que escapar dos veces de todos los comandos tmux que quiero enviar a esa sesión. Quiero algo donde la sesión remota aparezca en mi lista de sesiones como lo haría una sesión local.
Omnifarioso

2

Si su problema principal es que tiene que escribir ssh remotehostcada vez que abre una nueva ventana, la default-commandopción de sesión puede ser una solución alternativa.

Ejecuta automáticamente el comando que especifique cuando abra nuevas ventanas en las sesiones en las que lo configuró.

Una configuración simple en .tmux.conf:

bind-key C-r new-session ssh remotehost \; set-option default-command "ssh remotehost"

Este enlace de teclas Ctrl-rcrea una nueva sesión donde cada ventana recién abierta se ejecuta ssh remotehosten primer lugar en su nombre.

Puede elegir hosts para conectarse en el momento de creación de la sesión con la siguiente configuración:

bind-key C-r command-prompt "new-session -s %1 ssh %1 \; set-option default-command \"ssh %1\""

Éste le pregunta el host que desea hacer sshen cada creación de sesión (no en cada creación de ventana) e inicia la sesión dedicada a ese host.

Se necesita poco tiempo para ejecutar muchos sshsi habilita la multiplexación SSH en su configuración ssh. El .ssh/configejemplo está abajo:

Host remotehost
    ControlMaster auto
    ControlPath ~/.ssh/mux-%r@%h:%p
    ControlPersist 10

Tenga en cuenta que esta configuración tmux no crea sesiones tmux en hosts remotos. Si se pierde la conexión ssh, las ventanas tmux afectadas nunca regresan.


1

Puede usar una herramienta como socat para hacer un túnel en el socket de dominio de Unix que tmux usa a su máquina local. Pero en realidad solo está cambiando un túnel (ssh) por otro (socat), por lo que no es realmente mejor y también inseguro.


Tal vez un túnel socata través ssh? 🙂
Omnifarioso

en este punto, tmatepodría ser la mejor herramienta para el manejo remoto de tmux
desinstalar

0

Si habla de shell remoto, quiere decir que puede ejecutar comandos allí, en otras palabras, tiene acceso directo. En este caso, simplemente puede usar la sshconexión para cada ventana remota.

Puedes decir algo como:

"¡Oye, pero no hay forma de tener múltiples ventanas para cada servidor remoto!"

y es cierto, debido a restricciones ssh. Pero, puede iniciar la sesión tmux en cada uno o en su servidor remoto. NOTA: en este caso, debe volver a vincular el valor predeterminado Ctrl+ben la máquina local para evitar colisiones.

También le recomiendo que use tmuxinator, es una herramienta muy útil si rectifica su sesión de tmux al menos todos los días.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.