Uso de claves SSH con Windows en AzureHow to use SSH keys with Windows on Azure

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.This article is for Windows users who want to create and use secure shell (SSH) keys to connect to Linux virtual machines (VMs) in 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.You can also generate and store SSH keys in the Azure portal to use when creating VMs in the portal.

Para usar las claves SSH desde un cliente Linux o macOS, consulte los pasos rápidos.To use SSH keys from a Linux or macOS client, see the quick steps. 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.For a more detailed overview of SSH, see Detailed steps: Create and manage SSH keys for authentication to a Linux VM in Azure.

Información general sobre SSH y sus clavesOverview of SSH and keys

SSH es un protocolo de conexión cifrada que permite inicios de sesión seguros a través de conexiones no seguras.SSH is an encrypted connection protocol that allows secure sign-ins over unsecured connections. SSH es el protocolo de conexión predeterminado de las máquinas virtuales Linux hospedadas en Azure.SSH is the default connection protocol for Linux VMs hosted in 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.Although SSH itself provides an encrypted connection, using passwords with SSH still leaves the VM vulnerable to brute-force attacks. 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.We recommend connecting to a VM over SSH using a public-private key pair, also known as SSH keys.

El par de claves pública y privada es como el bloqueo de la puerta principal.The public-private key pair is like the lock on your front door. El bloqueo se expone al público, es decir, cualquiera que tenga la clave correcta puede abrir la puerta.The lock is exposed to the public, anyone with the right key can open the door. La clave es privada y solo se proporciona a las personas en las que confía porque se puede usar para desbloquear la puerta.The key is private, and only given to people you trust because it can be used to unlock the door.

  • El clave pública se coloca en la máquina virtual Linux al crear la máquina virtual.The public key is placed on your Linux VM when you create the VM.

  • La clave privada permanece en el sistema local.The private key remains on your local system. Esta clave se debe proteger,Protect this private key. por lo que no se debe compartir.Do not share it.

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.When you connect to your Linux VM, the VM tests the SSH client to make sure it has the correct private key. Si es el caso, se le concede acceso a la máquina virtual.If the client has the private key, it's granted access to the VM.

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.Depending on your organization's security policies, you can reuse a single key pair to access multiple Azure VMs and services. No es necesario usar ningún par de claves independiente para cada máquina virtual.You do not need a separate pair of keys for each VM.

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.Your public key can be shared with anyone, but only you (or your local security infrastructure) should have access to your private key.

Formatos de clave SSH compatiblesSupported SSH key formats

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.Azure currently supports SSH protocol 2 (SSH-2) RSA public-private key pairs with a minimum length of 2048 bits. No se admiten otros formatos de clave como ED25519 y ECDSA.Other key formats such as ED25519 and ECDSA are not supported.

Clientes SSHSSH clients

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.Recent versions of Windows 10 include OpenSSH client commands to create and use SSH keys and make SSH connections from PowerShell or a command prompt. Esta es la manera más fácil de crear una conexión SSH a la máquina virtual Linux desde un equipo Windows.This is the easiest way to create an SSH connection to your Linux VM, from a Windows computer.

También puede usar Bash en Azure Cloud Shell para conectarse a la máquina virtual.You can also use Bash in the Azure Cloud Shell to connect to your VM. 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.You can use Cloud Shell in a web browser, from the Azure portal, or as a terminal in Visual Studio Code using the Azure Account extension.

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.You can also install the Windows Subsystem for Linux to connect to your VM over SSH and use other native Linux tools within a Bash shell.

Creación de un par de claves SSHCreate an SSH key pair

Cree un par de claves SSH con el comando ssh-keygen.Create an SSH key pair using the ssh-keygen command. Escriba un nombre de archivo o use el valor predeterminado que se muestra entre paréntesis (por ejemplo C:\Users\username/.ssh/id_rsa).Enter a filename, or use the default shown in parenthesis (for example C:\Users\username/.ssh/id_rsa). Escriba una frase de contraseña para el archivo o deje la frase de contraseña en blanco si no desea usar una frase de contraseña.Enter a passphrase for the file, or leave the passphrase blank if you do not want to use a passphrase.

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

Creación de una máquina virtual con su propia claveCreate a VM using your key

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.To create a Linux VM that uses SSH keys for authentication, provide your SSH public key when creating the VM.

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.Using the Azure CLI, you specify the path and filename for the public key using az vm create and the --ssh-key-value parameter.

az vm create \
   --resource-group myResourceGroup \
   --name myVM \
   --image UbuntuLTS\
   --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 '.With PowerShell, use New-AzVM and add the SSH key to the VM configuration using`. Para ver un ejemplo, consulte Inicio rápido: Creación de una máquina virtual Linux en Azure con PowerShellFor an example, see Quickstart: Create a Linux virtual machine in Azure with PowerShell.

Si realiza muchas implementaciones con el portal, es posible que quiera cargar la clave pública en Azure, donde se puede seleccionar fácilmente al crear una máquina virtual desde el portal.If you do a lot of deployments using the portal, you might want to upload your public key to Azure, where it can be easily selected when creating a VM from the portal. Para más información, consulte Carga de archivos en una cuenta de Media Services en Azure Portal.For more information, see Upload an SSH key.

Conexión a la máquina virtualConnect to your VM

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.With the public key deployed on your Azure VM, and the private key on your local system, SSH to your VM using the IP address or DNS name of your 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:Replace azureuser and 10.111.12.123 in the following command with the administrator user name, the IP address (or fully qualified domain name), and the path to your private key:

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

Si configuró una frase de contraseña cuando creó el par de claves, escríbala cuando se le solicite.If you configured a passphrase when you created your key pair, enter the passphrase when prompted.

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.If the VM is using the just-in-time access policy, you need to request access before you can connect to the VM. Para más información sobre la directiva Just-in-Time, vea Administración del acceso a máquina virtual mediante Just-In-Time.For more information about the just-in-time policy, see Manage virtual machine access using the just in time policy.

Pasos siguientesNext steps