Dans ce tutoriel nous allons voir comment utiliser et configurer une clef SSH pour se connecter à un serveur distant (serveur mutualisé, VPS ou dédié). Par défaut, les hébergeurs auront tendance à vous fournir un mot de passe, mais son utilisation s'avère peu sécurisée. Aussi, certains services peuvent vous demander une clef SSH pour interagir avec leur système (github, gitlab...).
L'utilisation de clés SSH offre plusieurs avantages :
- Meilleure sécurité : Une clef offre un niveau de sécurité supplémentaire car si une personne souhaite vous la voler il lui faudra un accès à votre système.
- Plus pratique : Certains systèmes disposent d'agents SSH qui permettent de se souvenir des clef (cela évite de taper le mot de passe systématiquement).
- Automatisation : Les clés SSH peuvent être utilisées pour automatiser des tâches, comme le déploiement de code.
Créer une paire de clés SSH
Pour utiliser des clés SSH, vous devez d'abord générer une paire de clés : une clé privée et une clé publique. La clé privée est conservée sur votre ordinateur et ne doit jamais être partagée. La clé publique est partagée avec le serveur pour autoriser la connexion sans mot de passe.
Pour générer une paire de clés SSH, on utilisera la commande ssh-keygen :
ssh-keygen -t ed25519 -C "your_email@example.com"
Vous pouvez aussi changer le fichier de destination à l'aide du drapeau -f
Copie de la clef sur le serveur
Maintenant que nous avons notre coupe de clef il faut l'envoyer au serveur (on envoie la clef public, la clef privée ne doit jamais être partagée !). On peut effectuer cette opération facilement à l'aide de la commande ssh-copy-id
ssh-copy-id -i ~/.ssh/clef.pub user@host.tld
Cette commande va modifier le fichier ~/.ssh/authorized_keys
du serveur pour ajouter la clef publique sur le serveur.
Se connecter avec sa clef
Une fois votre clef créée et copiée sur le serveur vous pouvez l'utiliser lors de votre connexion SSH.
ssh user@host.tld -i ~/.ssh/clef
Créer des alias
Pour éviter d'avoir à taper la commande complète à chaque fois vous pouvez vous créer des alias pour éviter la répétition. Cela se fait au travers du fichier ~/.ssh/config
.
Host *
IgnoreUnknown AddKeysToAgent,UseKeychain
AddKeysToAgent yes
UseKeychain yes
Host monalias
Hostname host.tld
User username
Port 22
IdentityFile ~/.ssh/maclef
IdentitiesOnly yes
Vous pourrez ensuite utiliser votre alias à la place du chemin de votre serveur SSH.
ssh monalias