Creación de llaves SSH en Linux, Mac y Windows. Explicamos el proceso para crear una llave SSH en local y usarlas al hacer login en servidores remotos, de modo que podamos aumentar la seguridad de las conexiones.
El proceso de creación de llaves es bastante sencillo en Linux y un poco más farragoso en Windows, pues se tiene que usar un software en particular. De todos modos, es bastante rápido. Vamos a resumirlo con algunas notas extra para poder aclarar posibles dudas.
Para conocimiento general, la llave SSH está compuesta por dos ficheros, uno con la llave pública y otro con la llave privada. La llave pública es la que tenemos que usar cuando sea necesario, colocándola en el lugar adecuado cuando se solicite. Sin embargo, la llave privada es algo que debe quedar a buen recaudo y tener cuidado de que no sea accesible por otras personas. Llave pública y privada tienen el mismo nombre de archivo, aunque la llave pública tendrá extensión ".pub", por lo que la podremos distinguir fácilmente.
Una llave SSH se puede usar varias veces, de modo que podrías configurarlas para el acceso a diversos servidores. Tampoco hay problema por crear varias llaves SSH en tu sistema si fuera necesario. Cada una tendría ese juego de par "llave pública / llave privada".
Crear la llave SSH en Linux / Mac
Para hacer esta tarea usamos un comando de sistema: ssh-keygen
. Este comando se encarga del proceso de creación de los archivos de la llave. Al ejecutarlo sin parámetros crea una llave de tipo "RSA".
ssh-keygen
Podemos especificar el tipo de la llave con el parámetro -t. De modo que aquí estaríamos creando también una llave RSA.
RSA no es más que uno de los muchos algoritmos de cifrado que podemos usar para la creación de las llaves SSH. Es uno de los más populares.
ssh-keygen -t rsa
Podemos especificar el número de bits en la clave que se va a generar. Para llaves "rsa" el valor predeterminado es de 2048 bit, que es suficiente en la mayoría de los casos. El valor mínimo sería 1024 bits. Por medio de la opción -b lo podemos configurar. Esto creará una llave de 4096 bit:
ssh-keygen -t rsa -b 4096
Como puedes ver en las anteriores imágenes, una vez iniciado este comando nos va a solicitar dos cosas:
- La localización donde almacenar la clave y el nombre del archivo.
- La clave para poder usar esta llave ssh.
Sobre estos puntos es importante conocer:
Ruta y nombre del archivo para almacenar la llave
Esta parte la puedes configurar a tu gusto. Realmente, cuando se arranca el comando ssh-keygen ya te sugiere una carpeta donde se suelen almacenar las llaves ssh y un nombre de archivo. Podemos simplemnte aceptar la ruta propuesta, sin embargo, no puedes tener dos llaves con el mismo nombre de archivo, por lo que lo normal sería que cambies al menos el nombre del archivo de la llave.
Te sugiero mantener todas las llaves ssh en la carpeta que nos indican. Sin embargo, el nombre del archivo lo puedes variar si lo deseas y de hecho será necesario en la mayoría de los casos, porque generalmente tendrás una llave para el acceso a cada servidor. Solamente acuérdate del nombre de tu llave a la hora de configurar los sistemas, o a la hora de usarla para loguearte en el servidor remoto.
El nombre del archivo o nombre de la ssh key es indiferente y no necesita una extensión en particular. Por ejemplo en mi caso podría guardarlas en esta ruta y nombre de archivo.
/Users/midesweb/.ssh/llave-ssh-servidor-preproduccion
La clave asociada a la llave
La llave ssh se puede asociar a una clave creada por ti mismo, de modo que cuando alguien use la llave ssh tendrá que indicar además la clave asociada.
La creación del password para la llave es meramente opcional. Es interesante porque le agrega un nivel extra de seguridad a tu llave SSH, de modo que si alguien la consigue, seguiría sin poder usar la llave si desconoce tu clave. Si no pones clave, la dejas en blanco, simplemente no te preguntará nada cuando se vaya a usar la llave ssh.
Obviamente, si le ponemos una clave será todavía más segura, porque aparte del archivo de la llave ssh un posible intruso necesitaría también la clave que haya asingado en el momento de la creación.
Sin embargo, he de reconocer que tener que escribir la clave cada vez que accedes al servidor usando la llave es un poco tedioso, por lo que muchas veces no la uso. Por supuesto, tienes que evaluar también los riesgos de perder o olvidar la clave que acabes de generar para la llave, puesto que si no tienes la clave correcta, la llave ssh será inservible.
En resumen, poner clave a esta llave es una decisión tuya. Solo que si te decides por crear esa clave, guárdala bien para que no se te pierda, porque entonces no podrías usar la llave SSH.
Usar la llave SSH
Para usar la llave simplemente tienes que localizar la carpeta donde se generó la llave y encontrar el archivo con el nombre de la llave que finaliza por .pub.
A la hora de crear ciertos servicios de alojamiento, o algunos servicios de Git, te solicitarán tu llave. Tendrás que abrir el .pub, copiar su contenido y pegarlo donde se te solicite.
Para el ejemplo de SSH, una vez configurada tu clave desde el panel de control de tu proveedor de alojamiento o proveedor cloud, tendrás que indicar el nombre de tu clave para poder hacer el login. Lo consigues con un comando como este:
ssh -i ~/.ssh/nombre_mi_clave user@255.255.0.1
Con el anterior comando usarás tu llave SSH llamada "nombre_mi_clave", que está en la carpeta "~/.ssh/", para conectarte a tu servidor con IP 255.255.0.1 y con el nombre de usuario "user".
Si configuraste una clave para esta llave, el terminal te solicitará que la introduzcas antes de proceder a realizar el login.
Crear la llave ssh desde Windows
Un programa popular para hacer SSH en Windows es Putty. Cuando lo instalas viene otro software que nos permite crear claves, llamado Putty Key Generator, bastante sencillo de usar.
Lo encuentras desde el botón de Wondows, buscando luego por Putty, como "PuTTYgen".
Ya dentro de PuTTYgen, para generar tu llave puedes configurar el tipo y seleccionar el número de bits en la parte de abajo. Generalmente será "RSA" y el valor predeterminado de bits es de 2048.
Luego tienes que pulsar el botón "Generate" para comenzar la generación de la clave.
En este momento te pedirá que muevas el puntero del ratón sobre la ventana de Puttygen para ir creando una secuencia aleatoria.
Una vez generada la clave te aparecerá la llave pública en la pantalla. Puedes copiar y pegar su contenido y llevártelo a cualquier sitio donde necesites configurar esta llave SSH. También puedes encontrar un botón para salvar tu llave pública en un archivo, en cualquier lugar de tu disco duro.
También tendrás que guardar tu llave privada. Hay otro botón justamente para ello. Simplemente acuérdate donde has dejado cada archivo. Con esto has terminado todo tu trabajo con PuttyGen.
Usar la llave privada
Para acceder a los sitios donde tengas configurada la llave pública generada en el paso anterior tienes que usar tu llave privada. Esto lo hacemos dentro de Putty, el programa que conecta por SSH.
En Putty, en la ventana de configuración es donde debes indicar la llave privada que vas a usar para conectar por SSH.
Para configurar nuestra clave tenemos que acceder a la configuración "Connection / SSH / Auth". Allí verás un botón que te permite buscar la llave privada del disco duro, para agregarla a tu inicio de sesión SSH.
Eso es todo! has podido crear tu llave SSH en local y usarla para el acceso a un servidor remoto. Esperamos que esta información te haya resultado de utilidad!
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...