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).
ssh login@hostname -t 'tmux -CC attach'
y buscar en el menú de shell-> tmux-> dashboard en iterm2.ssh login@hostname -t 'tmux -CC a -t sessionName'
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:
Primero use
.ssh/config
en su máquina local y.ssh/authorized_keys
en 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 haciendossh pi
(suponiendo quepi
es el nombre de host de su sistema remoto).Cree un nuevo perfil iTerm2 que, en lugar de iniciar sesión en su shell local, solo llame
ssh pi
para iniciar sesión en la máquina remota. Para configurar esto, vaya a: Preferencias / Perfiles / + / Command.Command = "ssh pi"Abra una ventana iTerm2 en la máquina remota a través de su nuevo perfil, haciendo: Perfiles / Pi.
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
ESC
dentro 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.
fuente
[[ $- == *i* && $SSH_TTY && -z $TMUX && ! -r ~/.notmux ]] && tmux attach-session && exit
en .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. Alexit
final, se cierra la conexión al salir de tmux (principalmente un desapego para mí).