Les bases
Le serveur SSH a plusieurs façons d'authentifier un client qui s'y connecte. La méthode la plus populaire est l'authentification par mot de passe car c'est la plus simple, mais elle n'est pas aussi sécurisée. Les mots de passe sont échangés avec des mécanismes sécurisés, cependant, en raison de la facilité d'utilisation, ils ne sont généralement pas complexes ou longs. Cela permet à l'attaquant de casser le mot de passe à l'aide d'attaques par force brute ou par dictionnaire. Dans de tels scénarios, les clés SSH peuvent fournir un moyen d'authentification sécurisé et fiable pour les clients.
Le serveur SSH utilise un schéma de cryptographie à clé publique pour authentifier les utilisateurs. Dans ce schéma, une paire de clés est générée, une clé publique et une clé privée, pour l'authentification. Comme son nom l'indique, une clé privée est gardée secrète par le client car sa compromission peut amener quelqu'un à se connecter au serveur sans aucune authentification supplémentaire.
La clé publique correspondante pour la clé privée secrète du client n'est pas gardée secrète et est copiée sur les systèmes auxquels l'utilisateur se connecte. La clé privée est utilisée pour déchiffrer le message chiffré à l'aide de la clé publique associée du client. À l'aide de la paire de clés, nous pouvons également activer l'authentification sans mot de passe. La clé publique de confiance du client est stockée dans un fichier spécial nommé authorized_keys dans le répertoire d'accueil du compte utilisateur.
Lorsqu'un client tente d'authentifier le serveur SSH à l'aide de clés, un défi est émis à l'aide de la clé publique du client stockée sur le serveur. En déchiffrant avec succès le défi à l'aide de la clé privée du client, l'utilisateur obtient l'accès au shell du serveur.
Configurer l'authentification par clé publique uniquement pour ssh
1. En tant qu'utilisateur root, modifiez le fichier de configuration du démon sshd (/etc/ssh/sshd_config ).
2. Modifiez les paramètres PermitRootLogin et PubkeyAuthentication pour qu'ils aient les valeurs suivantes :
PermitRootLogin without-password PubkeyAuthentication yes
Autorisez uniquement la connexion ssh basée sur une clé dans le compte root en définissant la valeur de la directive PermitRootLogin sur sans mot de passe comme indiqué ci-dessus.
3. Vérifiez que la syntaxe du fichier de configuration sshd_config est correcte avant de redémarrer le démon sshd.
# sshd -t
La commande ci-dessus ne devrait rien renvoyer. Cela signifie que le fichier de configuration est syntaxiquement correct et que vous êtes sûr de redémarrer le démon sshd sans aucun problème.
4. Redémarrez le démon sshd :
# service sshd restart
ou
# systemctl restart sshd