Podemos acceder desde nuestro equipo Linux a otro servidor Linux remoto por SSH, sin tener que indicar la contraseña cada vez, usando la autenticación mediante clave pública siguiendo estos pasos:
Contenidos
Configuración del servidor
Antes de nada debemos asegurarnos de que el servidor remoto permite el acceso por SSH mediante claves.
Descomentar o cambiar en /etc/ssh/sshd_config estos parámetros:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
ChallengeResponseAuthentication no
Reiniciamos el servicio de SSH para que coja estos cambios:
systemctl restart sshd
Generación de claves en el cliente
Necesitamos generar una clave pública y una clave privada en nuestro equipo para poder conectar al servidor sin contraseña. Antes de generarlas, confirmar si ya las tenemos, comprobando en nuestro directorio personal la existencia de estos archivos:
~/.ssh/id_rsa #clave privada
~/.ssh/id_rsa.pub #clave pública
En caso de que existan, saltar al siguiente paso.
Si no existen las creamos de esta manera:
ssh-keygen -t rsa -b 4096 -C "tucorreo@dominio.com"
- -t indica el tipo de clave
- -b (opcional) indica el tamaño de la clave. Si no lo indicamos será de 2048 bits. Puede ser recomendable indicar 4096 para mayor seguridad.
- -C (opcional) indica el comentario, en este caso indicamos nuestro correo
Aceptamos las opciones por defecto que aparecen. Podemos indicar una contraseña para la clave, pero no es necesario.
Ahora ya tendremos nuestra clave privada (~/.ssh/id_rsa) y nuestra clave pública (~/.ssh/id_rsa.pub).
Copiar la clave pública del cliente en el servidor remoto
El siguiente paso es copiar la clave pública, que acabamos de generar en nuestro ordenador, al servidor al que nos queremos conectar con este simple comando:
ssh-copy-id -i ~/.ssh/id_rsa.pub usuarioremoto@ip-servidorremoto
Lo que hace este comando, y que podemos hacer manualmente en caso de que nos dé error, es añadir nuestra clave pública (el contenido de nuestro archivo id_rsa.pub), en el archivo ~/.ssh/authorized_keys del servidor remoto.
Este archivo authorized_keys contiene todas las claves públicas de los equipos que se conectan sin contraseña al servidor. Si nuestra clave no está en ese archivo, no podremos conectarnos.
Acceder al servidor
Ahora ya podemos conectarnos al servidor sin que nos pida contraseña indicando simplemente nuestro nombre de usuario y la IP del servidor.
Si todo funciona correctamente, puede que queramos, para mayor seguridad, desactivar el acceso por SSH mediante contraseña, poniendo a no el parámetro PasswordAuthentication del /etc/ssh/sshd_config. OJO: sólo en caso de tener acceso local al servidor o por consola de emergencia en caso de VPS
Deja una respuesta