Si usa SSH con frecuencia para conectarse a un host remoto, una forma de proteger su 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 rsa
Alternativamente, también puede utilizar el DSA (algoritmo de firma digital) tecnología para crear la clave pública/privada.
ssh-keygen -t dsa
Nota: ha habido mucho debate sobre la seguridad de DSA y RSA. En mi opinión, a menos que seas muy particular y te guste profundizar en los detalles técnicos entre las dos tecnologías, no importa cuál de las dos elijas. Ambos funcionarán bien.
- En la siguiente pantalla, debería ver un mensaje que solicita la ubicación para guardar la clave. La ubicación predeterminada es la carpeta .ssh en su directorio de inicio. Presione Entrar para aceptar la configuración predeterminada.
- Se le pedirá que ingrese una frase de contraseña, NO la frase de contraseña para conectarse a su host remoto, sino la frase de contraseña para desbloquear la clave privada para que nadie pueda acceder a su servidor remoto, incluso si obtuvo su clave privada. La frase de contraseña es opcional. Para dejarlo en blanco, simplemente presione Entrar.
- Su clave SSH pública y privada ahora debería generarse. Abra el administrador de archivos y navegue hasta el directorio .ssh. Debería ver dos archivos: id_rsa e id_rsa.pub.
- Cargue su nueva clave pública SSH en su host remoto ejecutando el siguiente comando:
ssh-copy-id username@remote-host-ip-address
- Inicie sesión en su host remoto y edite su archivo de configuración SSH:
ssh username@remote-host-ip-address sudo nano /etc/ssh/sshd_config
Desplácese hacia abajo en el archivo de configuración y asegúrese de que los siguientes atributos estén configurados correctamente:
RSAAuthentication yes PubkeyAuthentication yes PasswordAuthentication no
Presione Ctrl + O para escribir y guardar el archivo, luego Ctrl + X para cerrar el archivo.
- Reinicie el servidor SSH en el host remoto:
sudo systemctl restart ssh
Eso es. Ahora puede conectarse a su host remoto con el siguiente comando:
ssh username@remote-host-ip-address
Preguntas frecuentes
Copié mi clave SSH en mi servidor remoto y aparece el error «Permiso denegado».
Lo más probable es que este problema se deba a un problema con la carpeta «.ssh» de su host remoto. De forma predeterminada, el demonio SSH rechaza cualquier conexión entrante si su carpeta de configuración y el archivo «authorized_keys» no tienen los bits de permiso correctos.
Para cambiar los permisos de archivos y carpetas, acceda a una consola local para su máquina remota, luego vaya a su directorio «/ home» y ejecute: chmod 700 /home/$USER/.ssh && chmod 600 /home/$USER/.ssh/authorized_keys
. Por último, reinicie el demonio para aplicar su nueva configuración: sudo systemctl restart ssh
.
¿Es posible crear varias claves SSH para el mismo servidor remoto?
¡Sí! Sin embargo, debe asegurarse de que cada clave SSH en su máquina tenga un nombre de archivo único ejecutando: ssh-keygen -f /home/$USER/.ssh/filename
.
Aparte de eso, asegúrese de especificar la clave que desea usar para iniciar sesión en su host remoto ejecutando: ssh -i /home/$USER/.ssh/filename username@remote.host.ip.address
.
¿Es posible importar una nueva clave SSH a un host remoto con una clave de trabajo antigua?
¡Sí! Primero, importa tu nueva clave al agente de autenticación SSH: ssh-add
. Luego, inicie sesión en su máquina anterior e importe su clave al mismo agente de autenticación: ssh -A old.machine.ip.address && ssh-add -c
.
Por último, deje la máquina anterior presionando Ctrl + D y conéctese a su host remoto con sus claves nuevas y antiguas.
Credito de imagen: Unsplash. Todas las alteraciones y capturas de pantalla por Ramces Red.
Danos tu opinión