Trucos interesantes y trucos SSH

Algunos consejos sobre el uso eficiente de SSH. Hablemos de cómo:

  • Utilice la autenticación de dos factores para las conexiones SSH
  • es seguro usar "reenvío de claves" (reenvío de agente);
  • salir de una sesión de SSH colgada;
  • deje la terminal abierta cuando salga o desconecte;
  • Comparta el terminal remoto con un amigo (¡sin Zoom!).

imagen

Autenticación multifactor SSH


Hay cinco formas de agregar un segundo factor para la autenticación en SSH:

  1. OpenSSH ( ).

    2020 OpenSSH FIDO U2F (Universal Second Factor). , .

    , 8.2 . ssh -V, nc [servername] 22.

    ecdsa-sk ed25519-sk ( ). $ 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. , SSH-, . Yubikey U2F+SSH with PIV/PKCS11. , FIDO U2F. , .
  3. ssh- yubikey-agent. Filippo Valsorda SSH- Yubikeys. .
  4. Touch ID sekey. Sekey — SSH- , secure enclave MacOS Touch ID.
  5. Single Sign On SSH. . Single Sign On SSH , , .


(agent forwarding)


Reenviar una clave en SSH le da acceso al host remoto a su agente SSH local. Cuando su cliente SSH utiliza el reenvío de claves (generalmente activado por la opción ssh -A), hay 2 canales en la conexión: su sesión interactiva y el canal de reenvío de claves. El agente SSH local crea un socket IPC que se conecta al host remoto a través de este canal. Esto es peligroso porque Un usuario con privilegios de root en un host remoto tiene acceso a su agente SSH local y potencialmente puede usarlo para acceder a los recursos de red en su nombre. Con el agente SSH estándar que se incluye con OpenSSH, nunca se sabe lo que sucedió. Pero si usa una clave U2F (o Sekey ), puede detener cualquier intento de usar su agente SSH.

Incluso con esta limitación, el uso periódico de reenvío de claves es perfectamente aceptable. No use este método para todas sus conexiones. Úselo solo si está seguro de su necesidad en situaciones específicas.

Salir de una sesión colgante de SSH


Las sesiones SSH a menudo se congelan debido a interrupciones de la red, pérdida de control por parte de un programa ejecutable o una de las secuencias de control del terminal que bloquean la entrada del teclado.

Aquí hay algunas formas de salir de una sesión bloqueada:

  1. Salida automática cuando la red se rompe. En su configuración SSH, .ssh/configdebe agregar: comprobará la conexión enviando solicitudes de eco al host remoto cada segundo. Si más de esas solicitudes quedan sin respuesta, entonces SSH cerrará la conexión.

    ServerAliveInterval 5
    ServerAliveCountMax 1


    sshServerAliveIntervalServerAliveCountMax
  2. . ssh ~ . ~. ( ).

    ~? , . , ~ , .

?Cuando se inventó Internet, las computadoras no eran particularmente móviles. Cuando trabaja en una computadora portátil y cambia entre redes WiFi IPv4, su dirección IP cambia. Dado que SSH se basa en una conexión TCP, y las conexiones TCP dependen de puntos de conexión con direcciones IP fijas, cada vez que se conecta a otra red, se pierde su conexión SSH. Cuando cambia su dirección IP, la pila de red tarda un tiempo en detectar que se pierde la conexión. Una conexión TCP no implica un apagado rápido de una de las partes en caso de problemas de red, por lo que intentará volver a intentar enviar los datos por más tiempo. En su terminal, la sesión se verá atascada. IPv6 agrega una funcionalidad que permite a los dispositivos mantener su dirección IP al cambiar de red.Entonces algún día esto dejará de ser un problema.

Cómo dejar una terminal abierta en un host remoto


Hay dos opciones para guardar una sesión cuando cambia de red o desea desconectarse por un tiempo:

  1. Usa Mosh o Eternal Terminal . Si realmente necesita una conexión que no se bloquee , incluso si cambia de una red a otra, use el shell móvil de Mosh. Mosh es un shell seguro que usa SSH para inicializar una sesión (apretón de manos), luego de lo cual cambia a su propio canal encriptado. Este canal es muy estable. Puede manejar diversas situaciones, incluidas las desconexiones de Internet, cambiar la dirección IP de su computadora portátil, grandes retrasos al transmitir a través de la red y otras. Gracias a la magia de UDP y al protocolo de sincronización utilizado por Mosh.

    Mosh , 60000–61000 UDP . mosh user@server .

    Mosh , SSH, - . , . SSH , , Mosh .
  2. tmux. , , tmux. SSH- , tmux attach, tmux. — , macOS .

    tmux Byobu — , . Byobu Ubuntu macOS Homebrew.



Cuando resuelve un problema complejo con los servidores, me gustaría compartir una sesión SSH con otra persona que esté en otro lugar. tmux es la mejor herramienta de terminal para compartir.
Por lo tanto, debe hacer lo siguiente:

  1. Asegúrese de que esté tmuxinstalado en su servidor en DMZ (o donde desea conectarse).
  2. Ambos deben conectarse al servidor a través de SSH con la misma cuenta .
  3. Uno de ustedes debe correr tmuxpara crear una tmuxsesión.
  4. Otro debe ejecutar el comando tmux attach.
  5. Voila! Has compartido la terminal.

Si necesita un ajuste más preciso de las sesiones multiusuario, use tmate, esta bifurcación tmux, que le permite hacer que las sesiones compartidas sean aún más fáciles.

Traducido por Andrey Zinchenko, jefe del departamento de análisis de Rexoft

All Articles