Acceder por SSH con clave pública

última modificación:

Cuando necesitamos conectarnos frecuentemente a un servidor por SSH, introducir la contraseña cada vez resulta incómodo y menos seguro que usar un par de claves. Con la autenticación por clave pública el servidor reconoce nuestra clave sin necesidad de contraseña, lo que además permite automatizar conexiones desde scripts y cron.

El primer paso es generar el par de claves en nuestro equipo local. Con -f indicamos la ruta donde guardar la clave (por defecto ~/.ssh/id_rsa) y con -N "" indicamos que no queremos frase de paso:

ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""

El comando crea dos archivos en ~/.ssh/: la clave privada (id_rsa) y la clave pública (id_rsa.pub). La clave privada no debe salir nunca de nuestro equipo.

A continuación copiamos la clave pública al servidor:

ssh-copy-id usuario@example.com

Esto añade nuestra clave al archivo ~/.ssh/authorized_keys del servidor. A partir de ese momento podemos conectarnos sin contraseña:

ssh usuario@example.com

Para que la clave privada no sea accesible a otros usuarios del sistema, es una buena práctica ajustar sus permisos con chmod:

chmod 600 ~/.ssh/id_rsa

Si el servidor no tiene ssh-copy-id disponible, podemos hacer el mismo paso manualmente:

cat ~/.ssh/id_rsa.pub | ssh usuario@example.com "cat >> ~/.ssh/authorized_keys"