Partage via


É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 actuellement en charge les principaux types de clé suivants :

  • Protocole SSH 2 (SSH-2) RSA (Rivest, Shamir, Adleman) d’une longueur minimale de 2 048 bits
  • Clés ED25519 d’une longueur fixe de 256 bits

Les autres formats de clé, tels que Diffie-Hellman à courbe elliptique (ECDH) et l’algorithme ECDSA, ne sont actuellement 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 -f ~/.ssh/id_rsa.pem

La commande suivante crée une paire de clés SSH en utilisant le chiffrement ED25519 avec une longueur fixe de 256 bits :

ssh-keygen -m PEM -t ed25519 -f ~/.ssh/id_ed25519.pem

Remarque

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

Remarque

La commande az sshkey create a le chiffrement RSA comme valeur par défaut et ne peut pas être utilisée pour générer des paires de clés ED25519. Toutefois, vous pouvez créer une paire de clés ED25519 avec ssh-keygen comme décrit ci-dessus, puis utiliser cette clé publique pour créer une machine virtuelle.

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 :

Paire de clés RSA

cat ~/.ssh/id_rsa.pub

Exemple de valeur de clé publique RSA classique :

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

Paire de clés ED25519

cat ~/.ssh/id_ed25519.pub

Exemple de valeur de clé publique ED25519 classique :

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILRjWGWLeiUQ3U9fNnCsNpXIyACpD/Jbm09OZGsz3DIM 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 le répertoire ~/.ssh/, 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}'.

Capture d’écran montrant l’utilisation de Run Command pour valider l’empreinte digitale de l’hôte.

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