SSH public and private key pair

Generar claves SSH seguras fácilmente

Con un simple comando: ssh-keygen -b 4096 -N "<frase para la key>" -f test.key && ssh-copy-id -i test.key.pub <user>@<HostnameRemoto-o-IP>

Video con un comando de una línea para generar el key pair y agregar la clave pública al servidor remoto

Este artículo muestra los pasos para generar pares de claves SSH y realizar una autenticación basada en claves.

Si tienes máquinas virtuales en tu homelab y quieres administrarlas mediante un par de claves, o usar Ansible para administrar muchos nodos con pares de claves en lugar de contraseñas, entre muchos otros casos de uso.

Realicé la demostración con dos máquinas virtuales Linux, una Ubuntu y una Debian, pero esto se aplica a todos los sistemas basados ​​en Unix. Esto también se puede hacer desde PowerShell en una versión de Windows 10 o más reciente usando el cliente OpenSSH integrado

Pasos:

1- Crea la clave con ssh-keygen -b 4096, esto utiliza una clave de 4096 bits en lugar de los 3072 que se crea por defecto

2- Agrega una frase de contraseña, puedes agregar esta frase de contraseña a un agente SSH en caso de que no quieras escribirla cada vez que uses el par de claves, también puedes dejarla en blanco pero eso hace que la autenticación sea menos segura.

Servidor local a la izquierda, a la derecha servidor de destino al que queremos acceder mediante SSH usando autenticacion basada en clave

3- Copia la clave pública al host remoto ssh-copy-id <user>@<HostnameRemoto-o-IP> este comando enviará la clave pública al archivo ~/.ssh/authorized_keys del servidor especificado, incluso logra crear el archivo y directorio en caso de que no estuviera allí.

ssh-copy-id <user>@<RemoteHostnameOrIP> y conexion SSH

En caso de querer deshabilitar la autenticación por contraseña en el servidor remoto:

1- Ingresa al host remoto y cambia PasswordAuthentication a no, esto se puede hacer en el archivo /etc/ssh/sshd_config pero es una buena práctica hacerlo en un archivo .conf en el directorio /etc/ssh/sshd_config.d/, en la segunda imagen a continuación lo hice con el comando sudo sed -i s/yes/no/ /etc/ssh/sshd_config.d/50-cloud-init.conf

Comprobando la configuracion de sshd para ambos servidores
Cambiando el PasswordAuthentication

2- Reinicie el servicio sshd para aplicar los cambios systemctl restart sshd

No podras acceder al servidor mediante SSH con la contraseña

Notas adicionales:

  • Se puede crear un archivo ~.ssh\config para administrar diferentes conexiones
  • Existen muchas otras características que hacen que la conexión sea más segura, algunos ejemplos: permitir que solo ciertas direcciones IP lleguen al servidor mediante una whitelist de SSH o iptables, agregar algunas restricciones en el archivo authorized_keys, entre otras prácticas recomendadas.
  • Si se utilizan máquinas virtuales en la nube, es más seguro utilizar el agente SSM en AWS o Azure Bastion, ya que no se expone ningún puerto para SSH.

Ingeniero de Seguridad informática, Administrador IT, anteriormente docente de tecnología, apasionado por la ingeniería y como aprovechar la tecnología para nuestro beneficio

Artículos relacionados

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *