Échec de la connexion SSH aux machines virtuelles Linux Azure en raison d’une configuration incorrecte de SELinux
S’applique à : ✔️ Machines virtuelles Linux
Note
CentOS référencé dans cet article est une distribution Linux et atteint la fin de vie (EOL). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez les conseils sur la fin de vie centOS.
Cet article fournit une solution à un problème où la connexion SSH (Secure Shell) à une machine virtuelle Azure échoue en raison de la configuration incorrecte de SELinux.
Background
Le modèle de sécurité Unix est basé sur le contrôle d’accès discrétionnaire (DAC). Security-Enhanced Linux (SELinux) implémente le contrôle d’accès obligatoire (MAC) pour Linux à l’aide de modules noyau et d’outils d’espace utilisateur. MAC fournit un environnement plus contrôlé pour l’accès aux ressources et supprime la capacité de l’utilisateur racine à accéder à toutes les ressources sur le système d’exploitation sans restrictions. Il atténue également plusieurs types de risques de sécurité en utilisant le modèle de sécurité Unix traditionnel.
Différentes distributions incluent SELinux out of the box ou fournissent un moyen simple d’activer la prise en charge du noyau et d’installer des outils d’espace utilisateur. Pour plus d’informations, consultez les articles SELinux suivants de certains des principaux fournisseurs Linux :
Les images basées sur Red Hat sur Azure sont activées avec SELinux ; d’autres distributions ne le sont pas. Lorsque vous utilisez SELinux dans Ubuntu, il existe un avertissement concernant son état non maintenu sur cette distribution. Ubuntu implémente une autre solution pour MAC, appelée AppArmor.
Prerequisites
Vérifiez que la console série est activée et fonctionnelle dans la machine virtuelle Linux.
Symptômes
Une configuration incorrecte de SELinux peut entraîner l’incapacité du système d’exploitation à charger la stratégie SELinux, ce qui empêche le système d’exploitation de terminer le démarrage.
Vérifiez la console série à partir du Portail Azure ou via Azure CLI. Le message suivant s’affiche à la fin de la sortie :
La configuration SELinux est gérée par l’administrateur système. L’administrateur système peut résoudre ce problème à l’aide de l’une des méthodes suivantes.
Solution 1 : Démarrer la machine virtuelle avec SELinux désactivée à l’aide de la console série
Déclenchez le redémarrage de la machine virtuelle (dur) à partir de la console série Azure.
Interrompez votre machine virtuelle dans le menu GRUB avec la touche ÉCHAP .
Sélectionnez E pour modifier la première entrée du noyau dans le menu GRUB.
Accédez à la
linux16
ligne et ajoutez-yselinux=0
pour désactiver temporairement SELinux.Validez et corrigez la configuration SELinux dans
/etc/selinux/config
.Par exemple, une erreur courante consiste à définir la
SELINUXTYPE
clé sur l’une des valeurs utilisées pour laSELINUX
clé. Consultez la capture d’écran suivante à titre d’exemple :Notez la dernière ligne.
SELINUXTYPE=disabled
LaSELINUXTYPE
clé doit être définie surtargeted
,minimum
oumls
plutôt quedisabled
sur . La capture d’écran suivante montre la configuration correcte :
Solution 2 : Réparer la configuration incorrecte de SELinux à l’aide d’une machine virtuelle de secours
Conseil
Si vous avez une sauvegarde récente de la machine virtuelle, restaurez la machine virtuelle à partir de la sauvegarde pour résoudre le problème de configuration.
Si la console série Azure ne fonctionne pas dans la machine virtuelle spécifique ou n’est pas une option dans votre abonnement, résolvez ce problème à l’aide d’une machine virtuelle de secours/réparation. À l’aide des commandes de réparation de machine virtuelle, créez une machine virtuelle de réparation à laquelle est connectée une copie du disque de système d’exploitation de la machine virtuelle affectée. Montez la copie des systèmes de fichiers du système d’exploitation dans la machine virtuelle de réparation à l’aide de chroot.
Note
Vous pouvez également créer une machine virtuelle de secours manuellement à l’aide du portail Azure. Pour plus d’informations, consultez l’article Résoudre les problèmes d’une machine virtuelle Linux en attachant le disque du système d’exploitation à une machine virtuelle de récupération à l’aide du portail Azure.
Validez et corrigez la configuration SELinux dans
/etc/selinux/config
. Pour ce faire, suivez l’étape 5 dans la solution 1 : démarrer la machine virtuelle avec SELinux désactivée à partir de la console série.Une fois la configuration SELinux corrigée, effectuez les actions suivantes :
- Quittez chroot.
- Démonter la copie des systèmes de fichiers de la machine virtuelle de secours/réparation.
- Exécutez la commande
az vm repair restore
pour remplacer le disque de système d’exploitation réparé par le disque de système d’exploitation d’origine de la machine virtuelle. Pour plus d’informations, consultez l’étape 5 de la réparation d’une machine virtuelle Linux à l’aide des commandes de réparation de machine virtuelle Azure. - Vérifiez si la machine virtuelle peut démarrer. Pour ce faire, examinez la Serial console Azure ou essayez de vous connecter à la machine virtuelle.
Prochaines étapes
Si le problème n’est pas dû à une configuration incorrecte de SELinux, consultez Résoudre les erreurs de démarrage d’Azure Linux Machines Virtuelles pour obtenir d’autres options de résolution des problèmes.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.