Étapes rapides : Créer et utiliser une paire de clés publique et privée SSH pour les machines virtuelles Linux dans Azure

S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles

Avec une paire de clés SSH (Secure Shell), vous pouvez créer des machines virtuelles dans Azure qui utilisent des clés SSH pour l’authentification. Cet article décrit comment générer et utiliser rapidement une paire de clés publique et privée SSH pour des machines virtuelles Linux. Vous pouvez effectuer ces étapes avec Azure Cloud Shell, un macOS ou un hôte Linux.

Pour obtenir de l’aide pour la résolution des problèmes avec SSH, consultez Dépannage d’une connexion SSH à une machine virtuelle Linux Azure défaillante, qui génère une erreur ou qui est refusée.

Notes

Les machines virtuelles créées à l’aide de clés SSH sont par défaut configurées avec les mots de passe désactivés, ce qui accroît grandement la difficulté des attaques par force brute visant à deviner les mots de passe.

Pour obtenir plus d’informations et des exemples, consultez Étapes détaillées pour créer des paires de clés SSH.

Pour découvrir d’autres méthodes permettant de générer et d’utiliser des clés SSH sur un ordinateur Windows, consultez Utilisation de clés SSH avec Windows sur Azure.

Formats de clé SSH pris en charge

Azure prend en charge les paires de clés publiques-privées RSA du protocole SSH-2 ayant une longueur minimale de 2 048 bits. Les autres formats clés tels que ED25519 et ECDSA ne sont pas pris en charge.

Création d’une paire de clés SSH

Utilisez la commande ssh-keygen pour générer des fichiers de clés SSH publiques et privées. Par défaut, ces fichiers sont créés dans le répertoire ~/.ssh. Vous pouvez spécifier un autre emplacement et un mot de passe facultatif (phrase secrète) pour accéder au fichier de clé privée. Si une paire de clés SSH portant le même nom existe dans l’emplacement choisi, les fichiers sont remplacés.

La commande suivante crée une paire de clés SSH à l’aide du chiffrement RSA avec une longueur de 4096 :

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

Notes

Vous pouvez également créer des paires de clés avec l’interface Azure CLI à l’aide de la commande az sshkey create, comme décrit dans Générer et stocker des clés SSH.

Si vous utilisez Azure CLI pour créer votre machine virtuelle avec la commande az vm create, vous pouvez éventuellement générer des fichiers de clés SSH publiques et privées à l’aide de l’option --generate-ssh-keys. Les fichiers de clés sont stockés dans le répertoire ~/.ssh, sauf indication contraire avec l’option --ssh-dest-key-path. Si une paire de clés SSH existe déjà et si l’option --generate-ssh-keys est utilisée, aucune nouvelle paire de clés n’est générée. Toutefois, la paire de clés existante est utilisée à la place. Dans la commande suivante, remplacez VMname, RGname et UbuntuLTS par les valeurs de votre choix :

az vm create --name VMname --resource-group RGname --image Ubuntu2204 --generate-ssh-keys

Fournir une clé publique SSH lors du déploiement d’une machine virtuelle

Pour créer une machine virtuelle Linux qui utilise des clés SSH pour l’authentification, spécifiez votre clé publique SSH quand vous créez la machine virtuelle à l’aide du portail Azure, d’Azure CLI, de modèles Azure Resource Manager ou d’autres méthodes :

Si vous n’êtes pas familiarisé avec le format d’une clé publique SSH, vous pouvez afficher votre clé publique à l’aide de la commande cat suivante, en remplaçant ~/.ssh/id_rsa.pub par le chemin et le nom de votre propre fichier de clé publique, si nécessaire :

cat ~/.ssh/id_rsa.pub

Exemple de valeur de clé publique type :

ssh-rsa AAAAB3NzaC1yc2EAABADAQABAAACAQC1/KanayNr+Q7ogR5mKnGpKWRBQU7F3Jjhn7utdf7Z2iUFykaYx+MInSnT3XdnBRS8KhC0IP8ptbngIaNOWd6zM8hB6UrcRTlTpwk/SuGMw1Vb40xlEFphBkVEUgBolOoANIEXriAMvlDMZsgvnMFiQ12tD/u14cxy1WNEMAftey/vX3Fgp2vEq4zHXEliY/sFZLJUJzcRUI0MOfHXAuCjg/qyqqbIuTDFyfg8k0JTtyGFEMQhbXKcuP2yGx1uw0ice62LRzr8w0mszftXyMik1PnshRXbmE2xgINYg5xo/ra3mq2imwtOKJpfdtFoMiKhJmSNHBSkK7vFTeYgg0v2cQ2+vL38lcIFX4Oh+QCzvNF/AXoDVlQtVtSqfQxRVG79Zqio5p12gHFktlfV7reCBvVIhyxc2LlYUkrq4DHzkxNY5c9OGSHXSle9YsO3F1J5ip18f6gPq4xFmo6dVoJodZm9N0YMKCkZ4k1qJDESsJBk2ujDPmQQeMjJX3FnDXYYB182ZCGQzXfzlPDC29cWVgDZEXNHuYrOLmJTmYtLZ4WkdUhLLlt5XsdoKWqlWpbegyYtGZgeZNRtOOdN6ybOPJqmYFd2qRtb4sYPniGJDOGhx4VodXAjT09omhQJpE6wlZbRWDvKC55R2d/CSPHJscEiuudb+1SG2uA/oik/WQ== username@domainname

Si vous copiez et collez le contenu du fichier de clé publique pour l’utiliser dans le portail Azure ou dans un modèle Resource Manager, veillez à ne pas copier pas les espaces blancs de fin. Pour copier une clé publique dans macOS, vous pouvez diriger le fichier de clé publique vers pbcopy. De même, sous Linux, vous pouvez diriger le fichier de clé publique vers des programmes comme xclip.

La clé publique que vous placez sur votre machine virtuelle Linux dans Azure est stockée par défaut dans ~/.ssh/id_rsa.pub, sauf si vous avez spécifié un autre emplacement quand vous avez créé la paire de clés. Pour utiliser Azure CLI 2.0 pour créer votre machine virtuelle avec une clé publique existante, spécifiez la valeur et éventuellement l’emplacement de cette clé publique à l’aide de la commande az vm create avec l’option --ssh-key-values. Dans la commande suivante, remplacez myVM, myResourceGroup, UbuntuLTS, azureuser et mysshkey.pub par votre propres valeurs :

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --ssh-key-values mysshkey.pub

Si vous souhaitez utiliser plusieurs clés SSH avec votre machine virtuelle, entrez-les dans une liste séparée par des virgules, comme ceci --ssh-key-values sshkey-desktop.pub, sshkey-laptop.pub.

Se connecter avec SSH à votre machine virtuelle

Une fois la clé publique déployée sur votre machine virtuelle Azure et la clé privée sur votre système local, connectez-vous avec SSH à votre machine virtuelle à l’aide de l’adresse IP ou du nom DNS de votre machine virtuelle. Dans la commande suivante, remplacez azureuser et myvm.westus.cloudapp.azure.com par le nom d’utilisateur de l’administrateur et le nom de domaine complet (ou l’adresse IP) :

ssh azureuser@myvm.westus.cloudapp.azure.com

Vous êtes invité à vérifier l’empreinte digitale de l’hôte lors de votre première connexion sur cette machine virtuelle. Il est tentant d’accepter l’empreinte digitale présentée, mais cette approche vous expose à une éventuelle attaque de l’intercepteur. Vous devez toujours valider l’empreinte digitale de l’hôte. Vous ne devez effectuer cette opération que lors de la première connexion d’un client. Pour obtenir l’empreinte digitale de l’hôte via le portail, utilisez la fonctionnalité Run Command pour exécuter la commande ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'.

Screenshot showing using the Run Command to validate the host fingerprint.

Pour exécuter la commande à l’aide de l’interface CLI, utilisez az vm run-command invoke.

Si vous avez spécifié une phrase secrète lors de la création de votre paire de clés, entrez-la quand vous y êtes invité pendant le processus de connexion. La machine virtuelle est ajoutée à votre fichier ~/.ssh/known_hosts et vous n’avez pas à vous connecter à nouveau tant que la clé publique sur votre machine virtuelle Azure n’est pas modifiée ou que le nom de serveur n’est pas supprimé du fichier ~/.ssh/known_hosts.

Si la machine virtuelle utilise la stratégie juste-à-temps, vous devez demander à y accéder avant de pouvoir vous connecter à cette machine virtuelle. Pour plus d’informations sur la stratégie juste-à-temps, consultez Gérer l’accès à la machine virtuelle à l’aide de la stratégie juste-à-temps.

Étapes suivantes