Accueil
» LINUX
»
Comment activer la connexion SSH root sous Linux avec des clés SSH
Comment activer la connexion SSH root sous Linux avec des clés SSH
Activez la connexion SSH en tant que root avec une clé publique en l'ajoutant au répertoire `/etc/sshd` de root authorized_keys, en configurant PermitRootLogin prohibit-password`opensshd_config`, en validant la configuration OpenSSH et en redémarrant le service. Cela permet à root de se connecter par clé tout en bloquant l'authentification par mot de passe et l'authentification interactive au clavier. Consultez le manuel `sshd_config` d'OpenSSH pour la définition des options.
Cette illustration du terminal montre l'invite de confiance ; vérifiez l'empreinte digitale réelle de l'hôte via un canal de confiance avant de l'accepter.
L'accès root direct confère à une clé acceptée un contrôle total. Utilisez-le uniquement sur un système que vous administrez et de préférence derrière un réseau privé ou un pare-feu. Pour les opérations courantes, connectez-vous en tant qu'utilisateur nommé et utilisez la commande appropriée sudo. Gardez votre session ouverte et assurez-vous de disposer d'une solution de secours avant de modifier les paramètres SSH à distance.
Avant de modifier le serveur SSH
Connectez-vous avec un compte capable d'exécuter la commande sudoet vérifiez que le serveur OpenSSH est en cours d'exécution.
Préparez une paire de clés SSH client. Copiez la clé publique (généralement le fichier se terminant par .ssh .pub) ; ne partagez jamais la clé privée.
Ne définissez pas de mot de passe root uniquement pour l'authentification SSH par clé. Le verrouillage du mot de passe et l'accès par clé publique sont deux mécanismes de contrôle distincts, même si les politiques de compte de la distribution peuvent affecter la connexion. Le guide de gestion des utilisateurs d'Ubuntu explique que le verrouillage du mot de passe seul ne désactive pas l'accès par clé SSH existant.
Activer la connexion SSH root par clé
1. Connectez-vous en tant qu'administrateur habituel
Depuis un terminal sur votre client, connectez-vous avec le compte qui possède déjà les droits sudo :
ssh admin@server.example.com
Remplacez les valeurs d'exemple. Vérifiez l'empreinte digitale de la nouvelle clé hôte via un canal de confiance avant de l'accepter.
2. Ajoutez votre clé publique au compte root
Sur le serveur, créez un répertoire SSH pour l'utilisateur root avec des permissions restreintes, puis modifiez la liste des clés autorisées :
Collez la clé publique complète sur une seule ligne et enregistrez. Ne collez jamais la clé privée et conservez les entrées existantes. Ensuite, limitez la propriété et les permissions :
Ajoutez la clé publique complète sur une seule ligne dans le fichier authorized_keys de l'utilisateur root ; la clé abrégée affichée ici n'est qu'un espace réservé visuel.
3. Définir la politique de connexion root
Ouvrez la configuration du serveur avec un éditeur, par exemple :
sudoedit /etc/ssh/sshd_config
Trouvez la PermitRootLogindirective active et modifiez-la comme suit :
PermitRootLogin prohibit-password
Cette méthode est plus sûre que PermitRootLogin yescelle qui autorise les mots de passe root. N'ajoutez pas de directive en double : OpenSSH utilise la première valeur obtenue, et les distributions peuvent charger Includedes fichiers. Modifiez le paramètre actif et laissez inchangées les options d'authentification non liées.
La ligne mise en évidence contrôle l'authentification racine ; les autres options d'authentification affichées sont des paramètres distincts et doivent correspondre à votre politique.
4. Validez la configuration avant de l'appliquer.
Vérifiez d'abord les erreurs de syntaxe :
sudo sshd -t
L'absence de résultat signifie que la vérification de syntaxe a réussi. Corrigez toute erreur signalée avant de recharger. Vérifiez la valeur effective avec :
sudo sshd -T | grep permitrootlogin
Vérifiez que le résultat est correct permitrootlogin prohibit-password. Sinon, vérifiez les fichiers inclus et Matchles blocs concernés. Le manuel sshd définit ` -tsshd` comme une vérification de syntaxe et `sshd` -Tcomme un rapport de configuration effective.
Exécutez sshd -t avant d'appliquer les modifications, puis examinez le paramètre de connexion root effectif.
5. Rechargez le service SSH
Utilisez le nom de service de votre distribution. Ubuntu et Debian utilisent généralement :
sudo systemctl reload ssh.service
Fedora, RHEL et de nombreuses autres distributions utilisent couramment :
sudo systemctl reload sshd.service
Si la commande `reload` n'est pas prise en charge, utilisez-la systemctl restartavec le nom de service correspondant et conservez votre session d'origine ouverte. Le guide OpenSSH d'Ubuntu recommande également de l'exécuter sshd -tavant de redémarrer.
Rechargez le démon SSH une fois la configuration validée par la vérification de syntaxe ; les noms de service varient selon la distribution.
6. Tester l'accès root depuis un deuxième terminal
Ouvrez un terminal séparé sur le client et spécifiez la clé privée qui correspond à la clé publique que vous avez installée :
ssh -i ~/.ssh/id_ed25519 root@server.example.com
Remplacez le chemin d'accès à la clé et le nom d'hôte. Vérifiez l'invite de clé d'hôte et assurez-vous que la session s'ouvre en tant que superutilisateur (root). Si le test échoue, effectuez le dépannage à partir de la session d'origine et laissez-la ouverte jusqu'à ce que l'accès soit rétabli.
Effectuez un test depuis un nouveau terminal client en utilisant la clé privée correspondante avant de fermer la session d'administrateur.
Résolution des problèmes liés à un refus d'accès root
Pour cela Permission denied (publickey), vérifiez que la clé publique complète est bien présente /root/.ssh/authorized_keyset que le client utilise sa clé privée correspondante. Revérifiez la propriété et les permissions :
PermitRootLoginVérifiez également la valeur effective , AllowUsersles DenyUsersrègles, les journaux du serveur et l'interpréteur de commandes de l'administrateur. Évitez de modifier ce paramètre par yescommodité ; cela pourrait étendre les méthodes d'authentification autorisées pour l'administrateur.
Le répertoire SSH de root doit appartenir à root, avec le mode 700 pour le répertoire et 600 pour authorized_keys.
Désactivez la connexion SSH root lorsque vous n'en avez plus besoin.
Pour désactiver l'accès SSH direct en tant que root, modifiez la directive active comme suit :
PermitRootLogin no
Exécutez sudo sshd -tet rechargez le service approprié. Cela bloque l'accès SSH direct à l'utilisateur root tout en laissant le compte administrateur accessible. Un simple verrouillage par mot de passe peut ne pas suffire à empêcher la connexion par clé publique de root.
Définissez PermitRootLogin sur non, validez et rechargez la page. Les autres options d'authentification affichées sont distinctes et ne sont pas nécessaires pour cette modification réservée à l'administrateur.