¿Qué es el reenvío de agentes SSH y cómo se usa?

Funtap / Shutterstock

El reenvío de agentes SSH le permite usar su clave SSH local y privada de forma remota sin preocuparse por dejar datos confidenciales en el servidor con el que está trabajando. Está integrado en el sshy es fácil de configurar y usar.

¿Qué es un agente SSH?

Su clave SSH pública es como su nombre de usuario o identidad y puede compartirla con todos. Su clave SSH privada es como una contraseña y se guarda localmente en su computadora. Pero es como almacenar sus contraseñas en una nota adhesiva: cualquiera puede verlas si tiene acceso a ellas. Luego, por seguridad, SSH le pedirá una frase de contraseña cuando genere sus claves (con suerte no se ha saltado ese paso) y usará esa frase de contraseña para cifrar y descifrar su clave privada.

Sin embargo, esto significa que tendrá que ingresar su contraseña cada vez que necesite usar su clave privada, lo que resultará molesto. Para manejar esto, la mayoría de las implementaciones de SSH usarán un agente, que mantiene su clave descifrada en la memoria. Esto significa que solo necesitará desbloquearlo una vez y persistirá hasta que se reinicie, lo que le permitirá iniciar sesión en sus servidores de forma segura sin un mensaje de contraseña. Deberá asegurarse de que su servidor SSH esté bloqueado, por supuesto.

¿Qué es el reenvío de agentes SSH?

Agente SSH Reenvío es como ir a otro nivel más profundo. Por ejemplo, imagine que se conecta a un servidor remoto y desea git pull del código que está almacenando en Github. Quieres usar la autenticación SSH para Github, pero no quieres tus claves privadas en ese servidor remoto, solo en tu computadora.

Para solucionar esto, puede abrir su agente SSH local en el servidor remoto, lo que le permite actuar como lo hace mientras está conectado. Esto no envía sus claves privadas a través de Internet, incluso cuando están encriptadas; solo permite que un servidor remoto inicie sesión en su agente SSH local y verifique su identidad.

Funciona así: le pides a tu servidor remoto que extraiga un código de Github y Github dice "¿quién eres?" al servidor. Por lo general, el servidor consultaría sus propios id_rsa para responder, pero enviará la pregunta a la computadora local. Su máquina local responde la pregunta y envía la respuesta (que no incluye su clave privada) al servidor, que la reenvía a Github. A Github no le importa que su máquina local haya respondido la pregunta, solo ve que ha sido respondida y le permite conectarse.

RELACIONADOS: Cómo bloquear su servidor SSH

Cómo habilitar el reenvío de agentes SSH

En Mac y Linux, el reenvío de agentes SSH está integrado ssh, y el ssh-agent el proceso se inicia automáticamente. Todo lo que necesita hacer es asegurarse de que sus claves se hayan agregado a ssh-agent y configurar ssh utilizar el reenvío.

Agregar claves a ssh-agent

Puedes usar la utilidad ssh-add para agregar claves a su agente local. Suponiendo que su clave privada está almacenada en id_rsa, Tu puedes correr:

ssh-add ~/.ssh/id_rsa

También puede pegar manualmente la clave en lugar de usar id_rsa. Verifique que la clave se agregó correctamente con:

ssh-add -L

Si es así, debería escupir tu llave.

Agregar claves en macOS

En macOS, deberá ejecutar:

ssh-add -K ~/.ssh/id_rsa

La -K flag almacenará la clave en el llavero de macOS, que es necesario para recordar las claves durante los reinicios.

Permitir el reenvío en la configuración de su cliente

Abre los tuyos ~/.ssh/config archivo en su computadora local o cree uno nuevo si está vacío. Configuraremos una nueva regla para asegurarnos de que el reenvío de agentes esté habilitado para el dominio de este servidor:

Host example
  ForwardAgent yes

Deberías reemplazar example con el nombre de dominio o la dirección IP de su servidor. Puedes usar el comodín * para el host, pero luego reenviará el acceso a sus claves privadas a todos los servidores a los que se conecte, lo que probablemente no sea lo que desea.

Dependiendo de su sistema operativo, también puede tener archivos de configuración SSH en /etc/ssh/ssh_config para macOS o /etc/ssh_config para Ubuntu. Estos archivos pueden sobrescribir el archivo de configuración del usuario en ~/.ssh/config, así que asegúrese de que no haya ningún conflicto. Líneas que comienzan con # se comentan y no tienen ningún efecto.

También puede habilitar manualmente el reenvío de agentes para cualquier dominio utilizando ssh -A user@host, que ignorará todos los archivos de configuración. Si desea un método sencillo de reenvío sin tocar la configuración, puede agregar alias ssh="ssh -A" a su configuración de bash, pero esto es lo mismo que usar un host comodín, por lo que no recomendamos esto en absoluto centrado en la seguridad.

Prueba el reenvío SSH

Si no tiene dos servidores a mano, la forma más fácil de verificar si el reenvío SSH funciona es agregar su clave pública de su computadora local a la suya. Perfil de Github y prueba SSH desde un servidor remoto:

ssh git@github.com

Si funcionó, debería ver su nombre de usuario y debería poder enviar y extraer código de un repositorio sin tener que ingresar claves privadas en el servidor.

Configurar el reenvío SSH para clientes de Windows

Dado que Windows no es un sistema operativo Unix, la instalación variará dependiendo de cómo se esté ejecutando exactamente ssh en primer lugar.

Si está utilizando el Subsistema de Linux para Windows, que le permite ejecutar bash en Windows, la instalación será la misma que para Linux o macOS, ya que virtualiza completamente una distribución de Linux para ejecutar la línea de comandos.

Si está utilizando Git Bash, la configuración es la misma que para Linux, pero tendrá que iniciarla manualmente ssh-agent cuando inicias el shell, lo que puedes hacer con un script de inicio en .bashrc.

Si está utilizando PuTTY, la instalación es bastante sencilla. Desde la configuración, vaya a Conexión> SSH> Autenticar y habilite "Permitir retransmisión de agentes".

También puede agregar su archivo de clave privada desde el mismo panel. PuTTY manejará el agente SSH por usted, por lo que no tendrá que meterse con ningún archivo de configuración.

RELACIONADOS: Cómo administrar un archivo de configuración SSH en Windows y Linux

Qué hacer si el reenvío SSH no funciona

Asegúrese de tener las claves SSH en primer lugar; si no lo haces, puedes correr ssh-keygen, que insertará su clave privada en ~/.ssh/id_rsa y tu clave pública en ~/.ssh/id_rsa.pub.

Verifique que sus claves SSH funcionen correctamente con la autenticación regular y agréguelas a ssh-agent. Puede agregar claves con ssh-add.

La ssh-agent el proceso también debe estar en ejecución. En macOS y Linux, debería iniciarse automáticamente, pero puede verificar que se esté ejecutando con:

echo "$SSH_AUTH_SOCK"

Si está configurado correctamente, debería ver un Listeners socket devuelto.

Asegúrese de que sus archivos de configuración estén configurados correctamente para incluir ForwardAgent yesy asegúrese de que ningún otro archivo de configuración anule este comportamiento. Para comprobar qué archivos de configuración está utilizando SSH, puede ejecutar ssh en modo detallado:

ssh -v git@github.com

Que debería mostrar qué archivos de configuración se utilizan. Los archivos que se muestran más adelante en esta lista tienen prioridad sobre los archivos anteriores.

Y, por supuesto, las opciones de la línea de comandos sobrescriben los archivos de configuración. Si el reenvío de agentes no funciona con ssh -Ay sus claves están configuradas correctamente en su agente, algo más está mal y deberá verificar su conexión con los servidores de la cadena.

Descubre más contenido

Deja una respuesta

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

Información básica sobre protección de datos Ver más

  • Responsable: Nelida Haydee Saldivia.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a KnownHost que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Subir