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"