El agente SSH: utilizar una clave protegida con contraseña

Supongamos el siguiente escenario. Como administradores de sistemas, es posible que utilicemos autenticación por clave pública para conectarnos a distintos equipos. En el caso de que no hayamos protegido nuestra clave privada mediante una frase de seguridad o contraseña, cualquier persona que tenga acceso a esta podrá conectarse a los equipos donde previamente hayamos agregado nuestra clave pública. Ya sea que se trate de un conocido que esté usando nuestra computadora o un extraño que la haya robado, esto representa un verdadero problema de seguridad. ¿Qué es el agente SSH y cómo puede ayudarnos a evitar el escenario que acabamos de describir? En este post intentaremos dar respuesta a esa pregunta.

El agente SSH

Con el fin de impedir esta situación, es recomendable establecer una frase de seguridad para la clave privada al crearla como explicamos en otra oportunidad. De esta manera, solamente quien la conozca la contraseña podrá utilizar la clave. Por otro lado, puede resultar tedioso tener que escribir la contraseña cada vez que vamos a emplearla. Para solucionar esto, podemos hacer que el agente SSH la administre por nosotros. Los pasos para lograrlo son los siguientes:

1.- Iniciar el agente:

eval $(ssh-agent)

2.- Agregar la clave privada al agente, ingresando (cuando se nos indique) la contraseña que hayamos utilizado para protegerla. En la Fig. 1 vemos el progreso realizado hasta el momento.

ssh-add ~/.ssh/id_rsa
El agente SSH en acción
Figura 1 – El agente SSH en acción

3.- Intentar iniciar la conexión nuevamente:

ssh [IP o nombre del servidor remoto]

Para ver las claves que está utilizando el agente en un momento dado, podemos utilizar ssh-add -l.

Al haber agregado nuestra clave privada al agente, no se nos pedirá ninguna frase de seguridad para iniciar sesión en el equipo remoto. El mismo concepto aplica si estuviéramos tratando de subir o bajar archivos mediante scp o sftp.

Espero que este post les haya resultado útil. ¡Nos leemos en breve!