ssh con autenticación de clave pública

ssh_rsa

Vamos a ver cómo podemos usar ssh y/o scp con autenticación de clave pública. O de dicho de otro modo, cómo podemos acceder a máquinas remotas sin necesidad de autenticarnos con la password del usuario remoto.

Las pasos que tenemos que dar son:

1. Crear un par de claves (pública y privada):

$ ssh-keygen -b 4096 -t rsa
[…]

El par de claves generadas (ficheros id_rsa.pub e id_rsa en este caso) se guardan en el directorio $HOME/.ssh/ del usuario.

2. Copiar la clave pública del usuario (fichero id_rsa.pub) en el servidor remoto. La mejor manera de hacerlo es ejecutando:

$ ssh-copy-id usuario_remoto@servidor_remoto
[…]

La clave pública del usuario es almacenada en el fichero $HOME/.ssh/authorized_keys del usuario remoto.

3. Ejecutamos ssh o scp

La primera vez que accedemos al servidor remoto su host key se guarda en el fichero $HOME/.ssh/know_hosts del usuario. A partir de ese momento podemos utilizar ssh y scp sin necesidad de escribir la password del usuario remoto.

Permisos:

Cuando esto no funciona, lo habitual es que haya un problema con los permisos de los directorios o ficheros implicados en el proceso, incluyendo los permisos del directorio $HOME de los usuarios.

  • El directorio .ssh debe tener permisos 700 (rwx------)
  • El fichero authorized_keys y el fichero con la clave privada deben tener permisos 600
     (rw-------)
  • El fichero con la clave pública debe tener permisos 644 (rw-r--r--)
  • El directorio $HOME puede tener permisos 755 o 744 o 711 o cualquier otro que conceda únicamente al usuario permisos de escritura. Es decir, nadie más a parte de él puede tener permiso de escritura. Si en el fichero /etc/ssh/sshd_config la opción StrictModes está activa esta condición es de obligado cumplimiento.

Más información:

$ man sshd
$ man ssh-keygen
$ man ssh-copy-id

También te podría gustar...

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.