Cómo generar una clave SSH pública/privada en Linux

Si utilizas SSH con frecuencia para conectarte a un host remoto, una forma de asegurar tu servidor SSH es usar una clave SSH pública/privada para que no se transmita ninguna contraseña a través de la red. También puede prevenir ataques de fuerza bruta.
En Linux, crear una clave SSH pública/privada es fácil.
- Abre una terminal. Escribe:
ssh-keygen -t rsaAlternativamente, también puedes usar la tecnología DSA (Algoritmo de Firma Digital) para crear la clave pública/privada.
ssh-keygen -t dsaNota: ha habido mucho debate sobre la seguridad de DSA y RSA. En mi opinión, a menos que seas muy particular y te guste indagar en los detalles técnicos entre las dos tecnologías, no importa cuál de las dos elijas. Ambas funcionarán bien.
- En la siguiente pantalla, deberías ver un aviso que pregunta por la ubicación para guardar la clave. La ubicación predeterminada es la carpeta .ssh en tu directorio de inicio. Presiona Enter para aceptar la configuración predeterminada.

- Se te pedirá que ingreses una frase de contraseña – NO la frase de contraseña para conectarte a tu host remoto, sino la frase de contraseña para desbloquear la clave privada para que nadie pueda acceder a tu servidor remoto incluso si obtienen tu clave privada. La frase de contraseña es opcional. Para dejarla en blanco, simplemente presiona Enter.

- Tu clave SSH pública y privada ahora debería estar generada. Abre el gestor de archivos y navega a la carpeta .ssh. Deberías ver dos archivos: id_rsa y id_rsa.pub.

- Sube tu nueva clave SSH pública a tu host remoto ejecutando el siguiente comando:
ssh-copy-id username@remote-host-ip-address
- Inicia sesión en tu host remoto y edita tu archivo de configuración SSH:
ssh username@remote-host-ip-address
sudo nano /etc/ssh/sshd_configDesplázate hacia abajo en el archivo de configuración y asegúrate de que los siguientes atributos estén configurados correctamente:
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication noPresiona Ctrl + O para escribir y guardar el archivo, luego Ctrl + X para cerrar el archivo.

- Reinicia el servidor SSH en el host remoto:
sudo systemctl restart sshEso es todo. Ahora puedes conectarte a tu host remoto con el siguiente comando:
ssh username@remote-host-ip-address
Preguntas Frecuentes
Copié mi clave SSH a mi servidor remoto y obtengo un error de “Permiso Denegado”.
Este problema se debe probablemente a un problema con la carpeta “.ssh” de tu host remoto. Por defecto, el demonio SSH rechaza cualquier conexión entrante si su carpeta de configuración y el archivo “authorized_keys” no tienen los permisos correctos.
Para cambiar los permisos de archivos y carpetas, accede a una consola local para tu máquina remota, luego ve a tu directorio “/home” y ejecuta: chmod 700 /home/$USER/.ssh && chmod 600 /home/$USER/.ssh/authorized_keys. Por último, reinicia el demonio para aplicar tu nueva configuración: sudo systemctl restart ssh.
¿Es posible crear múltiples claves SSH para el mismo servidor remoto?
¡Sí! Sin embargo, necesitas asegurarte de que cada clave SSH en tu máquina tenga un nombre de archivo único ejecutando: ssh-keygen -f /home/$USER/.ssh/filename.
Además de eso, asegúrate de especificar la clave que deseas utilizar para iniciar sesión en tu host remoto ejecutando: ssh -i /home/$USER/.ssh/filename [email protected].
¿Es posible importar una nueva clave SSH a un host remoto con una clave vieja que funcione?
¡Sí! Primero, importa tu nueva clave al agente de autenticación SSH: ssh-add. Luego, inicia sesión en tu antigua máquina e importa su clave al mismo agente de autenticación: ssh -A old.machine.ip.address && ssh-add -c.
Por último, deja la antigua máquina presionando Ctrl + D y conéctate a tu host remoto con ambas claves, la nueva y la antigua.
Crédito de imagen: Unsplash. Todas las alteraciones y capturas de pantalla por Ramces Red.