Une paire de clés SSH permet de se connecter en ssh sur des serveurs distants sans devoir taper son mot de passe à chaque connection. La clé privée est sauvegardée en local et la clé publique est déposée sur un ou plusieurs serveurs distants.
Trouver ses clés SSH
Si vous possédez déjà une paire de clés ssh, elle se trouvera dans le home dans le dossier .ssh
.
Par exemple :
(base) elodie@elodie-fernandez:~/.ssh $ ll
total 24
drwx------ 2 elodie elodie 4096 mars 1 14:26 ./
drwxr-x--- 36 elodie elodie 4096 mars 1 14:27 ../
-rw------- 1 elodie elodie 2610 févr. 17 12:40 id_rsa
-rw-r--r-- 1 elodie elodie 577 mars 1 14:26 id_rsa.pub
-rw------- 1 elodie elodie 1534 mars 1 14:26 known_hosts
-
id_rsa
est ma clé privée - à ne jamais partager. Notez que les permissions sont très restreintes sur ce fichier. -
ida_rsa.pub
est ma clé publique - à déposer sur les comptes et serveurs distants pour accès sans mot de passe. La même clé publique est utilisée pour toutes les connections distantes. -
known_hosts
contient la liste des serveurs distants sur lesquels je me suis déjà connectée
Créer une paire de clés SSH
Pour créer une clé ssh si on n'en a pas déjà une :
ssh-keygen -t rsa
Enter file in which to save the key (/home/elodie/.ssh/id_rsa):
Taper entrée pour sauvegarder les clés à l'endroit par défaut (comme dans l'exemple au-dessus)
Enter passphrase (empty for no passphrase):
Il est recommandé d'également taper entrée. Cela permet de n'utiliser par la suite aucun mot de passe pour les connections avec clé ssh. Dans le cas d'un réseau avec sécurité renforcée, il est possible d'utiliser une passphrase, qui sera demandée à chaque connection, pour augmenter la sécurité.
Les clés publiques et privées doivent maintenant être disponibles dans le répertoire .ssh
comme décrit ci-dessus.
Déposer sa clé publique sur un serveur distant
Il suffit de déposer sa clé publique sur des serveurs distants pour pouvoir y accéder sans devoir taper son mot de passe à chaque fois. Il est aussi possible d'ajouter sa clé publique à ses comptes GitHub et/ou GitLab pour pouvoir y accéder en ligne de commande sans mot de passe.
Pour une connection ssh sans mot de passe :
ssh-copy-id remote_user@host
Si la clé publique est disponible à l'endroit par défaut, elle sera automatiquement ajoutée sur le serveur distant au fichier ~/.ssh/authorized_keys
. Il est aussi de déposer la clé publique manuellement avec un scp
. Attention, si un fichier authorized_keys
existe déjà, il faut faire attention de bien seulement ajouter la clé publique à la fin du fichier et de ne pas effacer les clés publiques déjà présentes.
Cas particulier de GitHub/GitLab
Il suffit d'utiliser directement l'interface graphique et d'ajouter sa clé dans les préférences de son compte.