martes, 9 de junio de 2020

Acceso a un servidor por SSH mediante clave SSH

Configuración del equipo local

En caso de no tener una clave, hay que generarla con el comando:

ssh-keygen -t rsa -b 2048 -C "Descripción de la clave email@dominio.com"

Pedirá el nombre de salida, por defecto id_rsa, en mi caso puse mis nombre y apellidos, los archivos se guardarán en la carpeta ~/.ssh

Creamos un archivo de configuración para la conexión llamado config, dentro de la carpeta de claves, es decir:

~/.ssh/config

Y dentro del mismo agregamos algo similar a:

PubKeyAuthentication yes
IdentityFile ./path/to/key

Configuración en el servidor

En el servidor remoto es necesario agregar la clave publica en el archivo:

~/.ssh/authorized_keys

Hay dos formas de hacerlo, la primera mediante el comando:

$ ssh-copy-id -i ~/.ssh/id_rsa user@host -p port

La segunda forma mediante el comando:

$ cat ~/.ssh/id_rsa.pub | ssh user@host -p port "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Debemos asegurarnos que los permisos de la carpeta .ssh sean 755 y del archivo authorized_keys sean 644.

Para impedir el acceso al servidor mediante contraseñas y con root, editamos el archivo /etc/ssh/sshd_config, cambiando lo siguiente:

PermitRootLogin no 
PasswordAuthentication no
Reiniciamos el servicio:

$ systemctl restart sshd

Con esto deberíamos poder ingresar al servidor utilizando una llave ssh.

Tips:
Para eliminar un footprint generado de algún servidor usar:
ssh-keygen -f "~/.ssh/known_hosts" -R "DIR.IP.DEL.HOST"


Referencias:
https://www.stackscale.com/es/blog/configurar-llaves-ssh-servidor-linux/
https://www.ssh.com/ssh/config/
https://www.ssh.com/ssh/copy-id
https://serverfault.com/questions/253313/ssh-returns-bad-owner-or-permissions-on-ssh-config
https://askubuntu.com/questions/311558/ssh-permission-denied-publickey

No hay comentarios.:

Publicar un comentario