Vous pouvez vous connecter à un serveur Linux sans mot de passe à l'aide des clés SSH. Cette méthode est généralement plus sécurisée que l’authentification par mot de passe. Voici un aperçu du processus :
1. Générez une paire de clés SSH sur votre machine locale (client)
* Ouvrez un terminal sur votre ordinateur local (à partir duquel vous vous connecterez *depuis*).
* Utilisez la commande `ssh-keygen` :
```bash
ssh-keygen
```
* Invites : La commande vous demandera :
* Entrez le fichier dans lequel enregistrer la clé (/home/yourusername/.ssh/id_rsa) : Appuyez sur Entrée pour accepter l'emplacement par défaut (`~/.ssh/id_rsa` pour la clé privée et `~/.ssh/id_rsa.pub` pour la clé publique). C'est généralement la meilleure option.
* Entrez la phrase secrète (vide s'il n'y a pas de phrase secrète) : Ceci est *facultatif*. Une phrase secrète ajoute une couche de sécurité supplémentaire, vous obligeant à la saisir à chaque fois que vous utilisez la clé. Si vous ne souhaitez pas saisir de phrase secrète à chaque fois que vous vous connectez, laissez-la vide et appuyez deux fois sur Entrée. Cependant, sachez que sans phrase secrète, si votre clé privée est compromise, toute personne y ayant accès peut accéder à votre serveur. Pesez la commodité par rapport aux implications en matière de sécurité.
* Entrez à nouveau la même phrase secrète : Si vous avez choisi de saisir une phrase secrète, confirmez-la.
* Fichiers clés : Une fois le processus terminé, vous aurez deux fichiers dans le répertoire `~/.ssh` :
* `id_rsa` :Ceci est votre clé privée . Gardez ce fichier secret et sécurisé ! Ne le partagez jamais avec qui que ce soit !
* `id_rsa.pub` :Ceci est votre clé publique . Vous devrez copier le contenu de ce fichier sur le serveur.
2. Copiez la clé publique sur le serveur
Il existe plusieurs façons de copier la clé publique sur le serveur. Le plus simple est souvent `ssh-copy-id`, mais il nécessite une authentification par mot de passe *une dernière fois*. Si vous ne pouvez pas utiliser l'authentification par mot de passe pour commencer, vous devrez utiliser une méthode manuelle.
* En utilisant `ssh-copy-id` (le plus simple si vous avez un accès par mot de passe) :
```bash
ssh-copy-id utilisateur@adresse_ip_serveur
```
Remplacez « user » par votre nom d'utilisateur sur le serveur et « server_ip_address » par l'adresse IP ou le nom d'hôte du serveur. Vous serez invité à saisir votre mot de passe sur le serveur. Cette commande ajoute automatiquement votre clé publique au fichier `~/.ssh/authorized_keys` sur le serveur.
* Copie manuelle (si vous n'avez pas d'accès par mot de passe) :
1. Affichez la clé publique sur votre ordinateur local :
```bash
chat ~/.ssh/id_rsa.pub
```
Copiez l'intégralité du résultat (y compris le « ssh-rsa » au début et votre nom d'utilisateur et votre nom d'hôte à la fin). Cela ressemblera à quelque chose comme :`ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDF... votre nom d'utilisateur@votre nom d'hôte`
2. Connectez-vous au serveur en utilisant une méthode différente (par exemple, via une console Web ou un autre accès temporaire).
3. Créez le répertoire `.ssh` (s'il n'existe pas) et le fichier `authorized_keys` :
```bash
mkdir -p ~/.ssh
chmod 700 ~/.ssh #Important :définissez les autorisations pour restreindre l'accès
touchez ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys #Important :définissez les autorisations pour restreindre l'accès
```
4. Modifiez le fichier `authorized_keys` et collez votre clé publique :
```bash
nano ~/.ssh/authorized_keys # ou utilisez vi, vim, emacs, etc.
```
Collez la clé publique que vous avez copiée à l'étape 1 dans ce fichier. Assurez-vous que tout est sur une seule ligne. Enregistrez et fermez le fichier.
5. Important :Vérifiez les autorisations : Les autorisations incorrectes sont une cause fréquente d’échec de l’authentification par clé SSH. Assurez-vous de ce qui suit :
* Répertoire `~/.ssh` :`700` (drwx------) - Seul l'utilisateur peut y accéder.
* Fichier `~/.ssh/authorized_keys` :`600` (-rw-------) - Seul l'utilisateur peut lire et écrire.
* Répertoire personnel de l'utilisateur :lisible et exécutable par l'utilisateur (par exemple, « 755 » ou « 700 »).
3. Testez la connexion
* Maintenant, essayez de vous connecter au serveur sans mot de passe :
```bash
ssh utilisateur@adresse_ip_serveur
```
* Si vous définissez une phrase secrète sur votre clé privée, vous serez invité à la saisir. Si vous n’avez pas défini de phrase secrète, vous devriez être connecté directement.
4. Désactiver l'authentification par mot de passe (facultatif, mais recommandé pour la sécurité)
* Important :Assurez-vous de pouvoir vous connecter avec succès avec les clés SSH *avant* de désactiver l'authentification par mot de passe. Si vous vous verrouillez, vous devrez utiliser une autre méthode pour retrouver l'accès (par exemple, la console du serveur).
* Modifier le fichier de configuration du serveur SSH :
```bash
sudo nano /etc/ssh/sshd_config # ou utilisez vi, vim, emacs, etc.
```
* Recherchez et modifiez ces lignes (ou ajoutez-les si elles n'existent pas) :
```
Mot de passeAuthentification non
ChallengeResponseAuthentication non #Également recommandé de désactiver
UtiliserPAM non
```
* Enregistrez le fichier et redémarrez le service SSH :
```bash
sudo systemctl restart sshd #ou sudo service ssh restart selon votre système
```
Dépannage
* Les autorisations sont incorrectes : C'est le problème le plus courant. Vérifiez à nouveau les autorisations du répertoire `.ssh` et du fichier `authorized_keys`.
* Clé publique incorrecte : Assurez-vous d'avoir copié la clé publique *entière* dans le fichier `authorized_keys` et qu'il n'y a pas d'espaces ou de sauts de ligne supplémentaires.
* Configuration du serveur SSH : Vérifiez le fichier `sshd_config`. Il peut y avoir d'autres paramètres qui interfèrent avec l'authentification par clé (par exemple, « PubkeyAuthentication no »).
* SELinux/AppArmor : Si vous utilisez SELinux ou AppArmor, ils peuvent empêcher SSH d'accéder aux fichiers clés. Vérifiez leurs journaux et ajustez la configuration si nécessaire.
* Pare-feu : Assurez-vous que votre pare-feu autorise le trafic SSH (généralement le port 22, mais cela peut être différent).
* Configuration client : Vérifiez le fichier de configuration SSH de votre client (`~/.ssh/config`) pour tout paramètre susceptible de remplacer le comportement par défaut.
Considérations de sécurité
* Protégez votre clé privée : Votre clé privée est la chose la plus importante. S'il est compromis, quelqu'un peut usurper votre identité sur le serveur. Conservez-le en toute sécurité et envisagez d’utiliser une phrase secrète.
* Rotation régulière des clés : C'est une bonne pratique de générer périodiquement de nouvelles clés SSH et de supprimer les anciennes du fichier `authorized_keys`.
* Utilisez une phrase secrète forte : Si vous choisissez d’utiliser une phrase secrète, rendez-la forte et mémorable. Un gestionnaire de mots de passe peut vous aider.
* Limiter l'accès SSH : Utilisez des règles de pare-feu et d'autres mesures de sécurité pour restreindre l'accès SSH aux seuls réseaux et adresses IP approuvés.
* Désactiver l'authentification par mot de passe : Comme mentionné précédemment, la désactivation de l'authentification par mot de passe améliore considérablement la sécurité en éliminant le risque d'attaques par force brute.
En suivant ces étapes, vous pouvez vous connecter de manière sécurisée et pratique à votre serveur Linux sans mot de passe à l'aide de clés SSH. N'oubliez pas de donner la priorité à la sécurité et de protéger votre clé privée.
|