SSH Little Tricks

Este artículo ha compilado nuestras mejores prácticas para usar SSH de manera más eficiente. De ella aprenderás cómo:

  • Agregue un segundo factor al inicio de sesión SSH
  • Envío seguro de agentes
  • Cerrar sesión en una sesión SSH
  • Mantenga abierta la terminal permanente
  • Comparta una sesión de terminal remota con un amigo (¡sin Zoom!)

Agregar un segundo factor a su SSH


El segundo factor de autenticación se puede agregar a sus conexiones SSH de cinco maneras diferentes:

  1. Actualice su OpenSSH y use la clave de cifrado. En febrero de 2020, se agregó a OpenSSH soporte para las claves de cifrado FIDO U2F (Universal Second Factor). Esta es una gran característica nueva, pero hay un matiz: solo aquellos clientes y servidores que se hayan actualizado a OpenSSH versión 8.2 y superior podrán usar claves de cifrado, ya que la actualización de febrero introduce nuevos tipos de claves para ellos. Con el comando, ssh –Vpuede verificar la versión del cliente de SSH y la versión del servidor con el comandonc [servername] 22

    Se agregaron dos nuevos tipos de claves a la versión de febrero: ecdsa-sk y ed25519-sk (junto con los certificados correspondientes). Para generar un archivo de clave, simplemente inserte su clave de cifrado y ejecute el comando:

    $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk

    U2F . U2F — .

    , .

    - OpenSSH -sk-. U2F . - :

    $ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_sk

    , , :

    $ ssh-add -K

    .
  2. PIV+PKCS11 Yubikey. SSHD . Yubico U2F+SSH PIV/PKCS11. FIDO U2F, , , .
  3. yubikey-agent ssh-. SSH Yubikeys. .
  4. Touch ID sekey. Sekey SSH , Mac’ Touch ID .
  5. Single Sign On SSH. . single sign on SSH — (MFA).

agent forwarding


El reenvío del agente SHH permite que un host remoto acceda al agente SSH de su dispositivo local. Cuando use SSH con el reenvío de agente habilitado (generalmente a través de ssh -A), habrá dos canales en la conexión: su sesión interactiva y el canal para el reenvío de agente. A través de este canal, el socket Unix creado por su agente SSH local se conecta al host remoto. Este es un método arriesgado, ya que un usuario con acceso raíz en un dispositivo remoto puede acceder a su agente SSH local y potencialmente suplantarlo en la red. Al usar el agente SSH estándar del kit Open SSH, ni siquiera sabe que esto sucedió. Tener una clave U2F (o Sekey) lo ayudará a bloquear efectivamente cualquier intento de usar su agente SSH desde el exterior.

Incluso con esta precaución, es una buena idea utilizar el reenvío de agentes lo menos posible. No debe usarlo en cada sesión; use el reenvío de agente solo cuando esté seguro de su necesidad para la sesión actual.

Salir de una sesión colgante


La interrupción de la red, el comportamiento incontrolado de los programas o una secuencia de escape que bloquea la entrada del teclado son posibles causas de una interrupción de sesión SSH.

Hay varias formas de finalizar una sesión bloqueada:

  1. Salga automáticamente cuando se interrumpe la red. En su .ssh / config necesita agregar lo siguiente:

    ServerAliveInterval 5
    ServerAliveCountMax 1

    ssh enviará eco al host remoto cada segundo ServerAliveInterval para verificar la conexión. Si más ecos de ServerAliveCountMax no reciben una respuesta, ssh finalizará la conexión en el tiempo de espera y saldrá de la sesión.
  2. . ssh ~ () . ~. . ( .) ~? . , ~ , ~ .

? . IPv4 WiFi, IP- . SSH TCP , , , IP-, , SSH . IP-, . , TCP- . . , . IPv6 , . , .


Hay dos enfoques diferentes sobre cómo mantener una conexión cuando se cambia entre redes diferentes o si desea desconectarse por un corto tiempo.

1. Use Mosh o Eternal Terminal

Si realmente necesita una conexión que no cede incluso cuando cambia entre redes, use el shell móvil de Mosh. Este es un shell seguro que primero usa un protocolo de enlace SSH y luego cambia a su propio canal encriptado durante la sesión. Por lo tanto, Mosh crea un canal separado, muy estable y seguro que puede soportar interrupciones de Internet, cambiar la dirección IP de su computadora portátil, interrupciones graves de la red y mucho más, todo gracias a la magia de las conexiones UDP, así como a Protocolo de sincronización Mosh.

Para usar Mosh, deberá instalarlo tanto en el cliente como en el servidor, y abrir los puertos 60000-61000 para el tráfico UPD desconectado a su host remoto. En el futuro, será suficiente para usar para la conexión mosh user@server.

Mosh opera en el nivel de pantallas y pulsaciones de teclas, lo que le da una serie de ventajas sobre el reenvío del flujo binario de entrada y salida estándar entre el cliente y el servidor SSH. Si necesitamos sincronizar solo pantallas y pulsaciones de teclas, más tarde para restaurar una conexión interrumpida se vuelve mucho más fácil. Si bien SSH almacenará y enviará todo lo que sucedió, Mosh solo necesita almacenar las pulsaciones del teclado y sincronizar el último cuadro de la ventana del terminal con el cliente.

2. Use tmux

Si desea "entrar y salir cuando quiera" y mantener la sesión de terminal en un host remoto, use el multiplexor de terminal tmux . Me encanta tmux y lo uso constantemente. Si su conexión SSH se interrumpe, solo para reconectarse e ingresar para regresar a su sesión tmux tmux attach. Además, tiene funciones tan maravillosas como pestañas y paneles intra-terminales, similares a las pestañas en el terminal iOS, y la capacidad de compartir terminales con otros.

A algunas personas les gusta embellecer sus tmux con Byobu, un paquete que mejora en gran medida la usabilidad de tmux y le agrega muchos atajos de teclado. Byobu viene con Ubuntu y es fácil de instalar en una Mac a través de Homebrew.

Compartir una sesión de terminal remota con un amigo


A veces, al depurar problemas complejos en sus servidores, es posible que desee compartir una sesión SSH con alguien que no esté en la misma sala que usted. ¡tmux es perfecto para tal tarea! Es suficiente con solo unos pocos pasos:

  1. Asegúrese de que tmux esté en su servidor bastión o en algún servidor con el que vaya a trabajar.
  2. Ambos necesitarán conectarse a través de SSH al dispositivo usando una cuenta.
  3. Uno de ustedes debe iniciar tmux para comenzar una sesión de tmux.
  4. Otro debería ejecutar tmux attach
  5. Voila! Tienes una terminal común.

Si desea sesiones tmux multiusuario más sofisticadas, pruebe tmate, esta es una bifurcación de tmux que simplifica enormemente las sesiones de terminal conjuntas.

All Articles