Saltar al contenido

Integración de servidor remoto, iTerm2 y tmux

Solución:

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

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

Iniciar sesión a través de ssh [email protected] -t 'tmux -CC' y voilà: esto debería abrir la ventana iTerm2 en su cuadro local conectado al cuadro remoto.

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

  1. Primer uso .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 esté configurado correctamente, debería poder iniciar sesión simplemente haciendo ssh pi (suponiendo que pi es el nombre de host de su sistema remoto).

  2. Cree un nuevo perfil de 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”

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

  4. En la ventana de inicio de sesión remoto de iTerm2, en la línea de comando, haga lo siguiente: 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 de iTerm2, la pestaña inicial de iTerm2 representa el único 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 de tmux existentes.

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

  • Si cierra la ventana iTerm2 que muestra el modo de comando tmux, entonces parece que simplemente mata la instancia del cliente tmux que estaba conectada a esa sesión, por lo que ambas ventanas iTerm2 desaparecen, pero la sesión tmux sigue viva y puede volver a conectarse a eso.

  • Si desea una separación más ordenada de tmux, simplemente haga ESC dentro de la ventana del modo de comando tmux.

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

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

TLDR

ssh <hostname> -t 'tmux -CC new -A -s tmssh'

Explicación

Dentro de una sesión ssh existente (asumiendo que está usando iTerm2), simplemente puede ejecutar tmux -CC y se abrirá una ventana nativa de iTerm2 con la integración de tmux. Esto significa que dispone de desplazamiento nativo, pantalla dividida y copiar y pegar.

  • tmux -CC abre tmux en modo de control.

Puede combinar esto con el comando ssh para abrir inmediatamente la ventana nativa de tmux:

ssh [email protected] -t 'tmux -CC'
  • -t fuerza la asignación de pseudo-tty (permite caracteres de control dentro de SSH)

La desventaja de este enfoque es que obtendrá una nueva sesión tmux cada vez, por lo que no podrá volver a conectarse para ver los procesos de larga ejecución (a menos que recuerde ejecutar tmux -CC attach).

Podemos expandir un poco el comando para crear una sesión tmux con nombre, crear la sesión si no existe o volver a conectar si la sesión ya existe:

ssh <hostname> -t 'tmux -CC new -A -s tmssh'
  • new crea una nueva sesión
  • -A marcas new-session comportarse como attach-session si el nombre de la sesión ya existe
  • -s tmssh crea una sesión llamada tmssh

Ahora tiene una ventana nativa de iTerm2 tmux, que puede cerrar en cualquier momento y volver a conectarse cuando sea necesario.

Función auxiliar

Finalmente, para hacer la vida más fácil, podemos poner todo esto en una función auxiliar que puede agregar a su bashrc o zshrc:

# tmux+ssh helper function with iterm integration
function tmssh () {
  if [[ -z "$1" ]]; then
    me="${FUNCNAME[0]}${funcstack[1]}"
    echo "usage: $me [ssh-args] hostname"
    return 1
  fi

  ssh "[email protected]" -t 'tmux -CC new -A -s tmssh'
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *