Uso de claves SSH con Windows en Azure

Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles

Este artículo está destinado a los usuarios de Windows que desean crear y usar claves de shell seguro (SSH) para conectar con máquinas virtuales Linux en Azure. También puede generar y almacenar claves SSH en Azure Portal que se van a usar al crear máquinas virtuales en el portal.

Para usar las claves SSH desde un cliente Linux o macOS, consulte los pasos rápidos. Para más información sobre SSH, consulte Pasos detallados: crear y administrar claves SSH para la autenticación en una VM Linux en Azure.

Información general sobre SSH y sus claves

SSH es un protocolo de conexión cifrada que permite inicios de sesión seguros a través de conexiones no seguras. SSH es el protocolo de conexión predeterminado de las máquinas virtuales Linux hospedadas en Azure. Aunque el propio SSH proporciona una conexión cifrada, el uso de contraseñas con SSH deja la máquina virtual vulnerable a ataques por fuerza bruta. Se recomienda conectarse a una máquina virtual a través de SSH mediante un par de claves pública y privada, también conocidas como claves SSH.

El par de claves pública y privada es como el bloqueo de la puerta principal. El bloqueo se expone al público, es decir, cualquiera que tenga la clave correcta puede abrir la puerta. La clave es privada y solo se proporciona a las personas en las que confía porque se puede usar para desbloquear la puerta.

  • El clave pública se coloca en la máquina virtual Linux al crear la máquina virtual.

  • La clave privada permanece en el sistema local. Esta clave se debe proteger, No lo compartas.

Cuando se conecta a la máquina virtual Linux, la máquina virtual prueba el cliente SSH para asegurarse de tener la clave privada correcta. Si es el caso, se le concede acceso a la máquina virtual.

En función de las directivas de seguridad de la organización, puede volver a usar un par de claves único para obtener acceso a varias máquinas virtuales y servicios de Azure. No es necesario usar ningún par de claves independiente para cada máquina virtual.

La clave pública se puede compartir con cualquiera. Sin embargo, solo usted (o su infraestructura de seguridad local) debe tener acceso a la clave privada.

Formatos de clave SSH compatibles

Azure admite actualmente pares de claves públicas y privadas RSA del protocolo SSH 2 (SSH-2) con una longitud mínima de 2048 bits. No se admiten otros formatos de clave como ED25519 y ECDSA.

Clientes SSH

Las versiones más recientes de Windows 10 incluyen comandos del cliente OpenSSH para crear y administrar claves SSH y establecer conexiones SSH desde PowerShell o un símbolo del sistema.

También puede usar Bash en Azure Cloud Shell para conectarse a la máquina virtual. Puede usar Cloud Shell en un explorador web, desde Azure Portalo como un terminal en Visual Studio Code con la extensión de cuenta de Azure.

También puede instalar el Subsistema de Windows para Linux para conectarse a la máquina virtual a través de SSH y usar otras herramientas nativas de Linux en un shell de Bash.

Creación de un par de claves SSH

La manera más fácil de crear y administrar las claves SSH es usar el portal para crearlas y almacenarlas para su reutilización.

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.

Para crear un par de claves SSH en el equipo local mediante el comando ssh-keygen de PowerShell o de un símbolo del sistema, escribe el siguiente comando:

ssh-keygen -m PEM -t rsa -b 2048

Escriba un nombre de archivo o use el valor predeterminado que se muestra entre paréntesis (por ejemplo C:\Users\username/.ssh/id_rsa). Escribe una frase de contraseña para el archivo o deja la frase de contraseña en blanco si no deseas usar una.

Creación de una máquina virtual con su propia clave

Para crear una máquina virtual Linux que use claves SSH para la autenticación, proporcione la clave pública SSH al crear la máquina virtual.

Con la CLI de Azure, especifique la ruta de acceso y el nombre de archivo de la clave pública con az vm create y el parámetro --ssh-key-value.

az vm create \
   --resource-group myResourceGroup \
   --name myVM \
   --image Ubuntu2204\
   --admin-username azureuser \
   --ssh-key-value ~/.ssh/id_rsa.pub

Con PowerShell, use New-AzVM y agregue la clave SSH a la configuración de máquina virtual mediante '. Para ver un ejemplo, consulte Inicio rápido: Creación de una máquina virtual Linux en Azure con PowerShell

Si realizas muchas implementaciones mediante el portal, es posible que quieras cargar la clave pública en Azure, donde se puede seleccionar fácilmente al crear una máquina virtual desde el portal. Para más información, consulte Carga de archivos en una cuenta de Media Services en Azure Portal.

Conexión a la máquina virtual

Con la clave pública implementada en la VM de Azure y la clave privada en su sistema local, aplique SSH en la VM con la dirección IP o nombre DNS de la VM. Reemplace azureuser y 10.111.12.123 en el siguiente comando con el nombre de usuario administrador, la dirección IP (o el nombre de dominio completo) y la ruta de acceso a la clave privada:

ssh -i ~/.ssh/id_rsa azureuser@10.111.12.123

Si nunca te has conectado a esta máquina virtual, se te pedirá que verifiques la huella digital de los anfitriones. Es tentador aceptar la huella digital presentada, sin embargo, esto te expone a una posible persona en medio del ataque. 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 anfitrión a través del portal, usa el comando Ejecutar con el siguiente comando: ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'.

Captura de pantalla que muestra el uso de la característica

Para ejecutar el comando mediante la CLI, use el comando az vm run-command invoke.

Si configuró una frase de contraseña cuando creó el par de claves, escríbala cuando se le solicite.

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