L’authentification par clé publique pour se connecter à un serveur distant en utilisant le protocole SSH fonctionne avec deux clés : une publique et une privée. Pour comprendre son fonctionnement, la métaphore du cadenas et de la clé est souvent utilisée. La clé publique fonctionne comme un cadenas et la clé privée comme la clé. Le cadenas sera placé sur le serveur distant auquel vous voulez accéder ; lorsque vous essayez d’y accéder, il vérifiera que la machine qui essaie de se connecter possède la clé, la clé privée.
Pour configurer l’accès SSH avec la clé publique vous devez :
- Générer la paire clé publique/clé privée.
- Copier la clé publique sur le serveur.
- Désactiver l’accès au serveur avec mot de passe.
.
.
.
Comment générer la paire clé publique/clé privée
Pour générer les clés, vous pouvez utiliser ssh-keygen sur la machine locale depuis laquelle vous voulez vous connecter au serveur :
ssh-keygen -b 4096
ssh-keygen
demande le chemin et le nom du fichier qui hébergera les clés publiques et privées. Vous pouvez sauvegarder où vous voulez, mais le dossier doit avoir 700 permissions et le fichier avec la clé privée 600, sinon la connexion ne sera pas établie. La clé privée peut également être protégée par un mot de passe. De cette façon, s’il tombe entre des mains non désirées, vous aurez un peu plus de difficulté à l’utiliser.
user@localmachine$ ssh-keygen -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub.
ssh-keygen
génère deux fichiers :
- id_rsa est la clé privée, qui restera sur la machine locale.
- id_rsa.pub est la clé publique, qui doit être copiée sur le serveur distant auquel vous voulez accéder.
.
Copier la clé publique sur le serveur
Une fois la paire de clés générée sur la machine locale, la clé publique doit être copiée sur le serveur distant :
user@localmachine$ scp ~/.ssh/id_rsa.pub user@remotemachine:/home/user/uploaded_key.pub
La clé publique doit être incluse dans le fichier /home/user/.ssh/authorized_keys
. Si le dossier.ssh n’existe pas, nous le créons avant de le copier, ainsi que le fichier authorized_keys :
user@remotemachine$ mkdir .ssh user@remotemachine$ chmod 700 .ssh user@remotemachine$ touch .ssh/authorized_keys user@remotemachine$ chmod 600 .ssh/authorized_keys
Enfin, copiez la clé et supprimez le fichier copié sur le serveur :
user@remotemachine$ echo `cat ~/uploaded_key.pub` >> ~/.ssh/authorized_keys user@remotemachine$ rm /home/user/uploaded_key.pub
Désactiver l’accès au serveur avec le mot de passe
.
Une fois que vous avez activé l’accès SSH par clé publique, vous pouvez désactiver l’accès par mot de passe. Cela augmentera la sécurité, mais implique qu’en cas de perte de la clé privée, l’accès au serveur sera perdu : la clé privée doit être soigneusement stockée.
La configuration de serveur SSH se trouve dans le fichier /etc/ssh/sshd_config
. Pour désactiver l’accès SSH avec mot de passe ajouter la ligne suivante, éditer le fichier en tant que root :
PasswordAuthentication no
Pour augmenter la sécurité, deux réglages supplémentaires peuvent être effectués dans le fichier /etc/ssh/sshd_config
:
Désactive l’accès ssh pour l’utilisateur root :
PermitRootLogin no
Donnez l’accès SSH uniquement aux utilisateurs qui en ont besoin, et non à tout le monde :
AllowUsers usuario1 usuario2
Une fois les modifications effectuées, le serveur SSH doit être redémarré, toujours en tant que root :
service sshd restart
Accéder au serveur avec la clé publique
.
Pour se connecter au serveur avec une clé publique au lieu d’un mot de passe :
user@localmachine$ ssh user@remotemachine
Nous pouvons spécifier la clé privée à utiliser avec l’option -i :
user@localmachine$ ssh -i id_rsa user@remotemachine
Un commentaire