Servidor remoto, iTerm2 e integración tmux

30

Quiero poder iniciar una sesión de tmux en un servidor remoto y luego usar las ventanas nativas de iTerm2 y las pantallas divididas en mi máquina local.

Por ejemplo, supongamos que mi servidor remoto tiene una sesión tmux ejecutándose con una ventana que tiene dos paneles. En iTerm2 en mi máquina local, quiero dos paneles nativos de iTerm2 para que cada panel contenga un panel tmux diferente.

es posible?

(Sé que es posible lo contrario, por lo que puedo ejecutar una sesión tmux en mi máquina local y otra máquina verá mis pestañas iTerm2 como ventanas, por ejemplo. Pero esto parece algo inútil).

Mella
fuente

Respuestas:

40

Sí, es posible, pero asegúrese de:

  • Para tener instalada la última versión de tmux de forma remota
  • Tener la versión más reciente de iterm2 instalada localmente

Inicie sesión a través de ssh login@hostname -t 'tmux -CC'y voilà: esto debería abrir la ventana iTerm2 en su casilla local iniciada en la casilla remota.

usuario2046612
fuente
55
Tampoco se olvide de volver a conectar para usar ssh login@hostname -t 'tmux -CC attach'y buscar en el menú de shell-> tmux-> dashboard en iterm2.
therealmarv
1
oye, ¿sabéis cómo hacerlo con mosh en lugar de ssh? editar: no es posible: github.com/mobile-shell/mosh/issues/640
fane89
1
Si desea conectarse y conectarse a una sesión específica, puede usar lo siguiente:ssh login@hostname -t 'tmux -CC a -t sessionName'
Jeremy Iglehart
¿Alguna posibilidad de hacerlo funcionar con autossh o de alguna manera hacer que resista las desconexiones?
igor
4

Esto es lo que funcionó para mí, con las versiones de lanzamiento estable desde 2015-12-16, que son iTerm 2.1.4 en OS X 10.11.2 y tmux 1.9 en Raspbian Linux:

  1. Primero use .ssh/configen su máquina local y .ssh/authorized_keysen su máquina remota para configurar el inicio de sesión sin contraseña en el sistema remoto. Una vez que se haya configurado correctamente, debería poder iniciar sesión simplemente haciendo ssh pi(suponiendo que pies el nombre de host de su sistema remoto).

  2. Cree un nuevo perfil iTerm2 que, en lugar de iniciar sesión en su shell local, solo llame ssh pipara iniciar sesión en la máquina remota. Para configurar esto, vaya a: Preferencias / Perfiles / + / Command.Command = "ssh pi"

  3. Abra una ventana iTerm2 en la máquina remota a través de su nuevo perfil, haciendo: Perfiles / Pi.

  4. En la ventana de acceso remoto iTerm2, en la línea de comandos hacer: tmux -CC. Después de esto, su ventana iTerm2 muestra el modo de comando tmux, tmux crea una nueva sesión e iTerm2 crea inmediatamente una nueva ventana iTerm2 para esa sesión tmux. Dentro de esa nueva ventana iTerm2, la pestaña inicial iTerm2 representa la única ventana tmux de esa sesión. Si hace CMD-T, esto creará una nueva pestaña iTerm2, que representa una nueva ventana tmux.

¿Cómo usas esto?

  • En este punto, puede hacer "Shell / tmux / Dashboard" para observar la comprensión de iTerm2 de las sesiones y ventanas existentes de tmux.

  • Si cierra la ventana iTerm2 que representa la sesión de tmux, mata la sesión subyacente y todas sus ventanas de tmux.

  • Si cierra la ventana iTerm2 que muestra el modo de comando tmux, entonces parece que acaba con la instancia del cliente tmux que estaba conectada a esa sesión, por lo que ambas ventanas iTerm2 desaparecen, pero la sesión tmux todavía está activa y puede volver a adjuntarla a eso.

  • Si desea una separación más ordenada de tmux, simplemente hágalo ESCdentro de la ventana del modo de comando tmux.

  • Si en lugar de crear una nueva sesión de tmux, lo que deseaba originalmente era adjuntarlo a una sesión existente, puede hacerlo con tmux -CC attach.

En teoría, creo que debería haber una manera de configurar iTerm2 o tmux para que cuando se conecte al sistema remoto se conecte automáticamente a cualquier sesión de tmux existente, pero no pude hacer que eso funcionara modificando la línea de comando en El perfil iTerm2.

alga
fuente
Para conectarme automáticamente a una sesión tmux en ejecución en el inicio de sesión ssh, uso [[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exiten .bashrc (o algo que se llama desde allí). Las pruebas son para: shell interactivo, sesión ssh, que aún no se está ejecutando en tmux, no hay emergencias. archivo. Al exitfinal, se cierra la conexión al salir de tmux (principalmente un desapego para mí).
loco el