Pasos rápidos: Creación y uso de un par de claves pública-privada SSH para máquinas virtuales Linux en Azure
Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles
Con un par de claves SSH puede crear una máquinas virtuales en Azure que usen claves SSH para la autenticación. En este artículo se muestra cómo generar y usar rápidamente un par de archivos de claves pública-privada SSH para máquinas virtuales Linux. Estos pasos se pueden completar con Azure Cloud Shell o un host de macOS o de Linux.
Para obtener ayuda acerca de la solución de problemas con SSH, consulte Solución de problemas de conexión SSH a una máquina virtual Linux de Azure que producen error o se rechazan.
Nota
De forma predeterminada, las máquinas virtuales creadas con claves SSH están configuradas con las contraseñas deshabilitadas, lo que aumenta considerablemente la dificultad para tratar de adivinarlas por fuerza bruta.
Para más información y ejemplos, consulte los pasos detallados para crear pares de claves SSH.
Para ver otras formas de generar y usar claves SSH en un equipo con Windows, consulte Uso de SSH con Windows en Azure.
Formatos de clave SSH compatibles
Actualmente, Azure admite los siguientes tipos de clave:
- Protocolo SSH 2 (SSH-2) RSA (Rivest, Shamir, Adleman) con una longitud mínima de 2048 bits
- Claves ED25519 con una longitud fija de 256 bits
Actualmente no se admiten otros formatos clave, como Diffie-Hellman (ECDH) y Elliptic Curve Digital Signature Algorithm (ECDSA).
Creación de un par de claves SSH
Use el comando ssh-keygen
para generar archivos de clave pública y privada SSH. De forma predeterminada, estos archivos se crean en el directorio ~/.ssh. Puede especificar una ubicación distinta y una contraseña opcional (una frase de contraseña) para acceder al archivo de clave privada. Si existe un par de claves SSH con el mismo nombre en la ubicación escogida, estos archivos se sobrescriben.
El siguiente comando crea un par de claves SSH con ayuda del cifrado RSA y una longitud en bits de 4096:
ssh-keygen -m PEM -t rsa -b 4096 -f ~/.ssh/id_rsa.pem
El comando siguiente crea un par de claves SSH mediante ED25519 cifrado con una longitud fija de 256 bits:
ssh-keygen -m PEM -t ed25519 -f ~/.ssh/id_ed25519.pem
Nota:
También puede crear pares de claves con la CLI de Azure con el comando az sshkey create, como se describe en Generar y almacenar claves SSH.
Si usa la CLI de Azure para crear la máquina virtual con el comando az vm create, tiene la opción de generar archivos de clave pública y privada SSH con la opción --generate-ssh-keys
. Los archivos de claves se almacenan en el directorio ~/.ssh a menos que se especifique lo contrario con la opción --ssh-dest-key-path
. Si ya existe un par de claves SSH y se usa la opción --generate-ssh-keys
, no se generará otro par de claves, sino que se usará el existente. En el siguiente comando, reemplace VMname, RGname y UbuntuLTS por sus propios valores:
az vm create --name VMname --resource-group RGname --image Ubuntu2204 --generate-ssh-keys
Nota:
El comando az sshkey create detecta el cifrado RSA y no puede usarse para generar pares de claves ED25519, sin embargo puede crear un par de claves ED25519 usando ssh-keygen como se ha descrito anteriormente y luego usar esa clave pública para crear una máquina virtual.
Proporcione una clave pública SSH al implementar una máquina virtual
Si desea crear una máquina virtual con Linux que utilice claves SSH para la autenticación, especifique la clave pública SSH al crear la máquina virtual utilizando Azure Portal, la CLI de Azure, las plantillas de Resource Manager u otros métodos:
- Creación de una máquina virtuales Linux desde Azure Portal
- Creación de una máquina virtual Linux con la CLI de Azure
- Creación de una VM Linux mediante una plantilla de Azure
Si no está familiarizado con el formato de una clave pública SSH, puede mostrarla con el siguiente comando cat
, reemplazando ~/.ssh/id_rsa.pub
por la ruta de acceso y el nombre de su propio archivo de clave pública, si es necesario:
Par de claves RSA
cat ~/.ssh/id_rsa.pub
Un valor de clave pública RSA típico tiene el siguiente aspecto:
ssh-rsa AAAAB3NzaC1yc2EAABADAQABAAACAQC1/KanayNr+Q7ogR5mKnGpKWRBQU7F3Jjhn7utdf7Z2iUFykaYx+MInSnT3XdnBRS8KhC0IP8ptbngIaNOWd6zM8hB6UrcRTlTpwk/SuGMw1Vb40xlEFphBkVEUgBolOoANIEXriAMvlDMZsgvnMFiQ12tD/u14cxy1WNEMAftey/vX3Fgp2vEq4zHXEliY/sFZLJUJzcRUI0MOfHXAuCjg/qyqqbIuTDFyfg8k0JTtyGFEMQhbXKcuP2yGx1uw0ice62LRzr8w0mszftXyMik1PnshRXbmE2xgINYg5xo/ra3mq2imwtOKJpfdtFoMiKhJmSNHBSkK7vFTeYgg0v2cQ2+vL38lcIFX4Oh+QCzvNF/AXoDVlQtVtSqfQxRVG79Zqio5p12gHFktlfV7reCBvVIhyxc2LlYUkrq4DHzkxNY5c9OGSHXSle9YsO3F1J5ip18f6gPq4xFmo6dVoJodZm9N0YMKCkZ4k1qJDESsJBk2ujDPmQQeMjJX3FnDXYYB182ZCGQzXfzlPDC29cWVgDZEXNHuYrOLmJTmYtLZ4WkdUhLLlt5XsdoKWqlWpbegyYtGZgeZNRtOOdN6ybOPJqmYFd2qRtb4sYPniGJDOGhx4VodXAjT09omhQJpE6wlZbRWDvKC55R2d/CSPHJscEiuudb+1SG2uA/oik/WQ== username@domainname
Par de claves de ED25519
cat ~/.ssh/id_ed25519.pub
Un ED25519 valor de clave pública típico tiene este aspecto:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILRjWGWLeiUQ3U9fNnCsNpXIyACpD/Jbm09OZGsz3DIM username@domainname
Si copia y pega el contenido del archivo de clave pública para usarlo en Azure Portal o en una plantilla de Resource Manager, asegúrese de no copiar ningún espacio en blanco al final. Para copiar una clave pública en macOS, puede canalizar el archivo de clave pública a pbcopy
. Del mismo modo, en Linux puede canalizar el archivo de clave pública a programas como xclip
.
La clave pública que coloca en su máquina virtual Linux en Azure se almacena de manera predeterminada en ~/.ssh/
directorio, a menos que haya especificado una ubicación diferente al crear el par de claves. Si desea usar la CLI de Azure 2.0 para crear la máquina virtual con una clave pública existente, especifique el valor de esta clave pública y, de forma opcional, su ubicación ejecutando el comando az vm create con la opción --ssh-key-values
. En el siguiente comando, reemplace myVM, myResourceGroup, UbuntuLTS, azureuser y mysshkey.pub con sus propios valores:
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--ssh-key-values mysshkey.pub
Si desea usar varias claves SSH con la máquina virtual, puede escribirlas en una lista separada por comas, como esta --ssh-key-values sshkey-desktop.pub, sshkey-laptop.pub
.
Conexión SSH con la máquina virtual
Con la clave pública implementada en la máquina virtual de Azure y la clave privada en el sistema local, aplique SSH en la máquina virtual con la dirección IP o el nombre DNS de la máquina virtual. En el comando siguiente, reemplace azureuser y myvm.westus.cloudapp.azure.com por el nombre de usuario del administrador y el nombre de dominio completo (o la dirección IP):
ssh azureuser@myvm.westus.cloudapp.azure.com
Si se conecta a esta máquina virtual por primera vez, se le pedirá que compruebe la huella digital del host. Es tentador aceptar la huella digital que se presenta, pero ese enfoque le expone a un posible ataque de tipo "Man in the middle". Debe validar siempre la huella digital del host. Solo debe hacerlo la primera vez que se conecte desde un cliente. Para obtener la huella digital del host a través del portal, use la característica "Ejecutar comando" para ejecutar el comando ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'
.
Para ejecutar el comando mediante la CLI, use az vm run-command invoke
.
Si especificó una frase de contraseña al crear el par de claves, escríbala cuando se lo soliciten durante el proceso de inicio de sesión. La máquina virtual se agrega al archivo ~/.ssh/known_hosts y no se le pedirá que se conecte de nuevo hasta que se modifique la clave pública de la máquina virtual de Azure o se quite el nombre del servidor de ~/.ssh/known_hosts.
Si la máquina virtual está usando la directiva de acceso Just-In-Time, deberá solicitar acceso antes de poder conectarse a la máquina virtual. Para más información sobre la directiva Just-in-Time, vea Administración del acceso a máquina virtual mediante Just-In-Time.
Pasos siguientes
Para más información acerca de cómo trabajar con pares de claves SSH, consulte los pasos detallados para crear y administrar pares de claves SSH.
Si tiene problemas en las conexiones SSH con una máquina virtual de Azure, consulte Solución de problemas de conexiones SSH con una máquina virtual Linux de Azure.