seguridad

Creando claves SSH pública y privada para VM Linux en Azure

Recientemente, montando una infraestructura en Azure con múltiples máquinas virtuales Linux, alguien me comentó que se estaban encontrando con muchos problemas siguiendo los pasos indicados por Microsoft para crear claves SSH. Eso me ha llevado a escribir este artículo, ya que efectivamente para estos casos necesitamos generar y utilizar claves SSH (Secure SHell) para poder conectarnos con estas máquinas Linux hospedadas en Azure.

A pesar de que el mismo SSH ya supone una conexión cifrada, el uso de contraseñas con conexiones SSH deja mucho que desear, dejando la máquina virtual vulnerable a ataques de fuerza bruta y que su contraseña sea fácilmente accesible. Por ello, debemos utilizar un método mucho más seguro para conectarnos a una VM por SSH, que consiste en utilizar un par de claves (pública y privada), también llamadas claves SSH:

  • Clave pública: Se coloca en la VM Linux o en otros servicios que se deseen utilizar con el cifrado de clave pública.
  • Clave privada: se utiliza por un cliente SSH para verificar la identidad al conectase a la VM Linux. Obviamente, esta clave debe guardarse en un lugar seguro y no compartirla.

Recordemos que actualmente Azure admite las claves públicas y privadas RSA del protocolo SSH-2, con una longitud mínima de 2048 bits. Dicho esto, olvidémonos de utilizar otros formatos de clave como ED25519 ó ECDSA.

Existen varios métodos para generar claves SSH compatibles con Azure, unos más exitosos que otros, así que aquí nos vamos a centrar en un método manual muy eficaz desde Windows con el que evitaremos sorpresas. Para ello debemos seguir estos sencillos pasos.

  1. Descargar e instalar la versión más reciente de estas dos herramientas:
  2. Abrimos la aplicación Git Bash (se habrá instalado con Git for Windows), y vamos a ejecutar los siguientes comandos para crear una carpeta en el escritorio, la cual llamaremos azurekey, por ejemplo.
  3. Ahora vamos a ejecutar el siguiente comando para crear claves y certificados:
    openssl.exe req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout myPrivateKey.key -out myCert.pem

  4. Al ejecutar el comando anterior, se nos solicitarán unos datos: código de país, ciudad, etc. Si hay algún dato que no queramos poner, podemos poner un punto «.» en su lugar.
  5. Como medida de seguridad, vamos a cambiar los permisos para que sólo nosotros podamos acceder a la clave privada. Para ello, ejecutamos el comando.
    chmod 0600 myPrivateKey.key
  6. En el siguiente paso vamos a generar el archivo de clave pública partiendo del archivo de clave privada, y lo llamaremos myPublicKey.key con el siguiente comando:
    openssl.exe rsa -pubout -in myPrivateKey.key -out myPublicKey.key
  7. Ahora vamos a convertir nuestra clave privada en una clave privada RSA con el siguiente comando.
    openssl rsa -in ./myPrivateKey.key -out myPrivateKey_rsa
  8. Al igual que hicimos con la clave privada, como medida preventiva también vamos a cambiar los permisos de la clave privada RSA
    chmod 0600 myPrivateKey_rsa

    Con esto hemos terminado con Git Bash, antes de irnos a la siguiente herramienta. Como repaso os muestro otra imagen para que podamos comprobar si hemos seguido los pasos correctamente.Si nos vamos a la carpeta que hemos creado en el escritorio, podremos comprobar que están los 4 archivos que hemos creado.

  9. Ahora vamos a abrir Puttygen, y hacemos clic en File > Load private key. Abrimos la carpeta que hemos creado «azurekey», y cambiamos extensión de archivos a «All Files (*.*)» para poder mostrar todos los archivos. Y abrimos myPrivateKey_rsa
  10. Debemos ver un aviso que nos indica que el clave ha sido importada correctamente, así como indicándonos unas recomendaciones. Vamos a guardar la clave privada, y la llamaremos azure_private_key
  11. Al igual que hicimos con la clave privada, también vamos a guardar la clave pública, y la llamaremos azure_public_key
  12. Pues esto es todo! Ya lo tenemos, y si deseamos utilizar la clave pública ahora mismo para una implementación en Azure, simplemente hacemos un copiar y pegar! 😉

Compartir
Publicado por
Dani Alonso

Este sitio web utiliza cookies para que tengas la mejor experiencia de usuario. Si continuas navegando, estás dando tu consentimiento para aceptar las cookies y también nuestra política de cookies (esperemos que no te empaches con tanta cookie 😊)