¿Qué es un agente SSH?

El reenvío de agente SSH te permite utilizar tu clave SSH local y privada de forma remota sin preocuparse de dejar datos confidenciales en el servidor con el que estás trabajando. Está integrado en ssh, y es fácil de configurar y usar.

Tu clave SSH pública es como tu nombre de usuario o identidad, y puedes compartirla con todos. Tu clave SSH privada es como una contraseña y se guarda localmente en Tu ordenador. Pero, esto es como almacenar tus contraseñas en una nota adhesiva: cualquiera puede verlas si tiene acceso a ellas. Entonces, por seguridad, SSH te pedirá una frase de contraseña cuando generes tus claves (con suerte no omitiste ese paso) y usará esa frase de contraseña para cifrar y descifrar tu clave privada.

Sin embargo, esto significa que deberás ingresar tu frase de contraseña cada vez que necesites usar tu clave privada, lo que no es muy cómodo. Para gestionar esto, la mayoría de las implementaciones de SSH utilizarán un agente, que mantiene tu clave descifrada en la memoria. Esto significa que solo necesitarás desbloquearlo una vez, y persistirá hasta que reinicie, permitiéndote iniciar sesión en los servidores de forma segura sin un mensaje de frase de contraseña.

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

Agente de SSH o reenvío Es como pasar a otra capa más profunda. Por ejemplo, imagina que te estás conectando a un servidor remoto y quieres realizar git pull algún código que estés almacenando en Github. Deseas utilizar la autenticación SSH para Github, pero no deseas usar tus claves privadas en ese servidor remoto, solo en tu máquina.

Para resolver este problema, puedes abrir tu agente SSH local en el servidor remoto, permitiéndote actuar como tu mientras estás conectado. Esto no envía tus claves privadas a través de Internet, ni siquiera mientras están encriptadas; simplemente permite que un servidor remoto acceda a tu agente SSH local y verifique tu identidad.

Funciona así: le pide a tu servidor remoto que extraiga un código de Github, y Github dice «¿quién eres tu?» al servidor Por lo general, el servidor consultaría su propio archivoid_rsa para responder, pero en su lugar reenviará la pregunta a tu máquina local. Tu 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 tu máquina local haya respondido la pregunta, solo ve que ha sido respondida y te permite conectarte.

Cómo habilitar el reenvío de agentes SSH

En Mac y Linux, el reenvío de agentes SSH está integrado en ssh, y el ssh-agent El proceso se inicia automáticamente. Todo lo que tendrás que hacer es asegurarte de que tus claves estén agregadas a ssh-agent y configurar ssh para utilizar el reenvío.

Agregar claves a ssh-agent

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

ssh-add ~/.ssh/id_rsa

También puedes pegar manualmente la clave en lugar de usar id_rsa. Verifica que la clave se haya agregado correctamente con:

ssh-add -L

Si es así, debería echar su llave.

Agregar claves en macOS

En macOS, deberás ejecutar:

ssh-add -K ~/.ssh/id_rsa

los -K flag almacenará la clave en el llavero macOS, que es necesario para que recuerde tus claves a través de reinicios.

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

Abre tu archivo ~/.ssh/config en su máquina local, o crea uno nuevo si está vacío. Estableceremos 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 tu servidor. Puedes usar el comodín * para el host, pero luego reenviará el acceso a sus claves privadas a cada servidor al que te conectes, lo que probablemente no sea lo mejor.

Dependiendo de tu sistema operativo, también puedes tener archivos de configuración en /etc/ssh/ssh_config para macOS o /etc/ssh_config para Ubuntu Estos archivos pueden anular el archivo de configuración del usuario en ~/.ssh/config, así que asegúrate de que nada entre en conflicot. Líneas que comienzan con # están comentados y no tienen efecto.

También puedes habilitar manualmente el reenvío de agentes para cualquier dominio utilizando ssh -A user@host, que omitirá todos los archivos de configuración. Si deseas un método sencillo para reenviar sin tocar config, puedes agregar alias ssh="ssh -A" a la configuración de bash, pero esto es lo mismo que usar un host comodín, por lo que no lo recomendamos para nada si te queires centrar en la seguridad.

Prueba de reenvío SSH

Si no tienes dos servidores disponibles, la forma más fácil de probar si el reenvío SSH está funcionando es agregar tu clave pública de su máquina local a tu Perfil de Github e intenta usar SSH desde un servidor remoto:

ssh git@github.com

Si funcionó, deberías ver tu nombre de usuario, y deberías poder insertar y extraer código de un repositorio sin tener que poner claves privadas en el servidor.

Configurar el reenvío SSH para clientes de Windows

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

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

  • Si usas Git Bash, la configuración es la misma que en Linux, pero deberás iniciar manualmente ssh-agent cuando ejecutas el shell, lo que puedes hacer con un script de inicio en .bashrc.
  • Si usas PuTTY, la configuración es bastante simple. Desde la configuración, ve a Conexión> SSH> Autenticación y habilita «Permitir reenvío de agente».

También puedes agregar su archivo de clave privada desde el mismo panel. PuTTY manejará el agente SSH por ti, por lo que no tiene que perder el tiempo con ningún archivo de configuración.

Qué hacer si el reenvío SSH no funciona

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

Verifica que tus claves SSH funcionen correctamente con autenticación regular y agrégalas a ssh-agent. Puedes agregar claves con ssh-add.

los ssh-agent El proceso también debe estar ejecutándose. En macOS y Linux, debería iniciarse automáticamente, pero puedes verificar que se esté ejecutando con:

echo "$SSH_AUTH_SOCK"

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

Asegúrate de que tus archivos de configuración estén configurados correctamente para incluir ForwardAgent yesy asegúrate de que ningún otro archivo de configuración sobrescriba este comportamiento. Para verificar qué archivos de configuración está usando SSH, puedes ejecutar ssh en modo detallado:

ssh -v git@github.com

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

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

También te puede interesar: