Description du problème
Lorsque vous vous connectez à une instance Linux via SSH, la connexion échoue avec le message Permission denied, please try again, même si le nom d'utilisateur et le mot de passe sont corrects.
Diagnostic du problème
-
Connectez-vous à une instance ECS à l'aide d'une connexion VNC.
Accédez à ECS console - Instances. Dans le coin supérieur gauche, sélectionnez la région et le groupe de ressources de l'instance cible.
Accédez à la page de détails de l'instance cible. Cliquez sur Connect et sélectionnez VNC. Saisissez vos identifiants pour vous connecter à l'instance ECS.
-
Vérifiez la configuration du service SSH.
Si le paramètre
PermitRootLoginouPasswordAuthenticationest défini surnodans la configuration, reportez-vous à la section Cas d'utilisation 1 : La configuration SSH refuse la connexion pour résoudre le problème.PermitRootLogin: si ce paramètre est défini surno, il empêche l'utilisateur root de se connecter via SSH.PasswordAuthentication: si ce paramètre est défini surno, il empêche tous les utilisateurs de se connecter avec une authentification par mot de passe.
sudo cat /etc/ssh/sshd_config -
Vérifiez les journaux de sécurité du système.
Lorsqu'une politique SELinux bloque une tentative de connexion, elle enregistre un message d'erreur dans le journal de sécurité du système.
Une politique SELinux est un ensemble de règles de contrôle d'accès obligatoire qui définit les opérations que chaque processus peut effectuer sur des fichiers, des ports ou d'autres ressources.
# For CentOS/RHEL systems sudo grep -iE --color=auto 'Could not get shadow information' /var/log/secure # For Debian/Ubuntu systems sudo grep -iE --color=auto 'Could not get shadow information' /var/log/auth.logSi la commande ne renvoie aucune sortie, une politique SELinux en est probablement la cause. Reportez-vous à la section Cas d'utilisation 2 : Une politique SELinux bloque la connexion.
Résolution
Cas d'utilisation 1 : La configuration SSH refuse la connexion
-
Modifiez la configuration
sudo vi /etc/ssh/sshd_configAjustez les paramètres selon vos besoins :
Autoriser l'authentification par mot de passe : remplacez
PasswordAuthentication noparPasswordAuthentication yes.-
Autoriser la connexion de l'utilisateur root :
Autoriser l'authentification par clé (recommandé) : pour utiliser une paire de clés pour la connexion root, définissez
PermitRootLoginsurprohibit-password.-
Autoriser l'authentification par mot de passe : remplacez
PermitRootLogin noparPermitRootLogin yes.ImportantL'autorisation de la connexion root avec un mot de passe (
PermitRootLogin yes) accroît l'exposition de l'instance aux attaques par force brute. Nous vous recommandons d'utiliser l'authentification par clé ou de restreindre l'accès par adresse IP source à la place.
Après avoir modifié le fichier, appuyez sur
Esc, saisissez:wqet appuyez surEnterpour enregistrer le fichier et quitter. -
Vérifiez la configuration et redémarrez le service
-
Vérifiez la syntaxe du fichier de configuration. L'absence de sortie indique que la syntaxe est correcte.
sudo sshd -t -
Redémarrez le service SSH pour appliquer les modifications.
sudo systemctl restart sshd
-
-
Vérifiez la connexion
Reconnectez-vous à l'instance via SSH pour vérifier que le problème est résolu.
Cas d'utilisation 2 : Une politique SELinux bloque la connexion
-
Vérifiez l'état actuel de SELinux
Vérifiez si SELinux est en mode
enforcing.sudo sestatusSi la sortie affiche
SELinux statuscommeenabledetCurrent modecommeenforcing, la politique SELinux est active. -
Modifiez temporairement le mode SELinux pour rétablir l'accès
Basculez temporairement SELinux en mode
Permissive. Dans ce mode, SELinux enregistre des avertissements mais ne bloque pas les opérations.sudo setenforce 0ImportantCette modification est temporaire et sera réinitialisée au redémarrage de l'instance.
Après avoir exécuté la commande, essayez de vous reconnecter via SSH. Une connexion réussie confirme que SELinux était à l'origine du problème.
-
Modifiez de manière permanente la configuration SELinux (facultatif)
-
Modifiez le fichier de configuration. Remplacez le mode par défaut de SELinux de
enforcingàpermissive.sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config Redémarrez l'instance pour appliquer la modification.
-
-
Vérifiez la connexion
Reconnectez-vous à l'instance via SSH pour vérifier la connexion.