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

Reenvío de agentes SSH
Funtap / Shutterstock

El reenvío de agentes SSH le permite usar su clave SSH local privada de forma remota sin preocuparse por dejar datos confidenciales en el servidor con el que está trabajando. Esta construido en ssh, y 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 todo el mundo. Su clave SSH privada es como una contraseña y se guarda localmente en su computadora. Pero esto es como almacenar sus contraseñas en una nota adhesiva: cualquiera puede verlas si tiene acceso a ellas. Entonces, por seguridad, SSH le pedirá una frase de contraseña cuando genere sus claves (con suerte no se saltó 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 frase de contraseña cada vez que necesite usar su clave privada, lo que resultará molesto. Para gestionar esto, la mayoría de las implementaciones de SSH utilizarán un agente, que mantiene su clave descifrada en la memoria. Esto significa que solo necesitará desbloquearlo una vez, y persistirá hasta que reinicie, lo que le permitirá iniciar sesión en sus servidores de forma segura sin un mensaje de contraseña. Por supuesto, querrá asegurarse de que su servidor SSH esté bloqueado.

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

Agente SSH reenvío es como ir una capa más profunda. Por ejemplo, imagine que se está conectando a un servidor remoto y desea git pull algún código que estás almacenando en Github. Quieres usar la autenticación SSH para Github, pero no quieres tus claves privadas en ese servidor remoto, solo en tu máquina.

Para resolver este problema, puede abrir su agente SSH local al servidor remoto, lo que le permite actuar como usted mientras está conectado. Esto no envía sus claves privadas a través de Internet, ni siquiera mientras están encriptadas; simplemente permite que un servidor remoto acceda a 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 archivos para responder, pero en su lugar enviará la pregunta a su máquina 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 del agente SSH está integrado en ssh, y el ssh-agent El proceso se inicia automáticamente. Todo lo que tendrá que hacer es asegurarse de que sus claves se agreguen 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 agregue correctamente con:

ssh-add -L

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

Agregar claves en macOS

En macOS, en su lugar, deberá ejecutar:

ssh-add -K ~/.ssh/id_rsa

La -K flag almacenará la clave en el llavero de macOS, que es necesario para recordar sus claves al reiniciar.

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

Abre tu ~/.ssh/config archivo en su máquina local, o cree 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 sus servidores. Puedes usar el comodín * para el host, pero luego reenviará el acceso a sus claves privadas a cada servidor al que se conecte, 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 anular el archivo de configuración del usuario en ~/.ssh/config, así que asegúrese de que nada esté en 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 omitirá todos los archivos de configuración. Si desea un método sencillo para reenviar sin tocar config, 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 lo recomendamos para nada centrado en la seguridad.

Prueba de reenvío SSH

Si no tiene dos servidores a mano, la forma más fácil de probar si el reenvío SSH está funcionando es agregar su clave pública desde su máquina local a su Perfil de Github e intente 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 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á usando el Subsistema de 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 está utilizando Git Bash, la configuración es la misma que en Linux, pero deberá iniciar manualmente ssh-agent cuando lanza el shell, lo que puede hacer con un script de inicio en .bashrc.

Si está usando PuTTY, la configuración es bastante simple. Desde la configuración, vaya a Conexión> SSH> Auth y habilite «Permitir reenvío de agentes».

También puede agregar su archivo de clave privada desde el mismo panel. PuTTY se encargará del agente SSH por usted, por lo que no tendrá que perder el tiempo 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 claves SSH en primer lugar; si no lo haces, puedes correr ssh-keygen, que colocará 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 sobrescriba este comportamiento. Para verificar qué archivos de configuración está usando SSH, puede ejecutar ssh en modo detallado:

ssh -v git@github.com

Que 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 la línea de comandos anulan 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, entonces algo más está mal y deberá verificar su conexión con los servidores de la cadena.

Deja un comentario

En esta web usamos cookies para personalizar tu experiencia de usuario.    Política de cookies
Privacidad