SSH es una forma segura y común de acceder a servidores de forma remota. Sin embargo, en muchas ocasiones, necesitamos conectarnos a varios servidores remotos desde nuestra máquina personal, y el uso de contraseñas complejas puede resultar incómodo y poco seguro.
¡Pero no te preocupes! Existe una solución que te permitirá acceder de manera más sencilla y segura: la autenticación mediante claves SSH utilizando criptografía asimétrica.
¿Qué es la criptografía asimétrica?
La criptografía asimétrica es un sistema de encriptación que utiliza un par de claves relacionadas entre sí: una clave pública y una clave privada.
- La clave pública se comparte con otros usuarios y se utiliza para encriptar los datos.
- La clave privada se mantiene en secreto y se utiliza para desencriptar los datos.
Esto significa que, incluso si alguien tiene acceso a la clave pública, no podrá acceder a los datos sin la clave privada correspondiente. Este método es ampliamente utilizado en SSH para autenticar usuarios de manera segura sin necesidad de contraseñas.
Pasos para implementar la autenticación con claves SSH
1. Generar el par de claves
En tu máquina cliente (tu computadora personal), debes generar un par de claves pública/privada que te identificarán en los servidores remotos. Puedes elegir proteger la clave privada con una frase de contraseña (passphrase) o dejarla sin protección.
- Si decides dejar la clave sin frase de contraseña, cualquiera que tenga acceso al archivo de la clave (por ejemplo, el usuario root en tu máquina) podría obtener el mismo nivel de acceso que tú, y no se le pedirá ninguna contraseña al conectarse al servidor remoto.
- Si proteges la clave con una frase de contraseña, se te pedirá que la ingreses cada vez que uses la clave privada.
Para generar el par de claves, ejecuta el siguiente comando en tu terminal:
ssh-keygen -t rsa -b 4096
Durante este proceso, puedes especificar la ubicación del archivo de la clave o simplemente presionar Enter para utilizar la ubicación predeterminada (~/.ssh/id_rsa
). Si eliges proteger la clave con una frase de contraseña, se te pedirá que la ingreses y confirmes.
2. Instalar la clave pública en los servidores remotos
SSH generalmente viene con una utilidad llamada ssh-copy-id
, que permite agregar el contenido de tu clave pública (~/.ssh/id_rsa.pub
) en el archivo ~/.ssh/authorized_keys
del servidor remoto.
Una vez que la clave pública está instalada en el servidor, podrás acceder sin que se te pida una contraseña.
Para realizar este paso, copia la clave pública generada en el primer paso al servidor al que deseas ingresar:
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@ip-del-servidor
En este punto, se te pedirá la contraseña del usuario en el servidor remoto.
Alternativa: Copiar manualmente la clave pública
Si no tienes acceso a ssh-copy-id
, puedes copiar manualmente la clave pública al servidor remoto utilizando el comando scp
. Luego, agrega el contenido del archivo id_rsa.pub
al final del archivo authorized_keys
en el servidor.
- Copia la clave pública al servidor:
scp ~/.ssh/id_rsa.pub usuario@ip-del-servidor:~/
- Conéctate al servidor y agrega la clave al archivo
authorized_keys
:
ssh usuario@ip-del-servidor
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
- Asegúrate de que los permisos del archivo
authorized_keys
sean correctos:
chmod 600 ~/.ssh/authorized_keys
3. Conectar al servidor sin contraseña
Una vez que la clave pública esté instalada en el servidor, podrás conectarte sin necesidad de ingresar una contraseña:
ssh usuario@ip-del-servidor
Si protegiste tu clave privada con una frase de contraseña, se te pedirá que la ingreses.
Conclusión
Implementar la autenticación con claves SSH simplifica considerablemente la forma de conectarse a múltiples servidores remotos, eliminando la necesidad de utilizar contraseñas complejas. Este método no solo es más cómodo, sino también más seguro, ya que reduce el riesgo de ataques de fuerza bruta.
Como un punto adicional, puedes crear alias en tu archivo ~/.ssh/config
para conectarte con un comando breve y facilitar aún más el acceso a tus servidores.
¡Y eso es todo! Ahora estás listo para disfrutar de una conexión SSH más fácil, rápida y segura.