SSH en pratique — clés, fichier config et transfert de fichiers
Les clés SSH remplacent les mots de passe par une authentification cryptographique. Le fichier config simplifie vos connexions. SCP et rsync transfèrent vos fichiers efficacement.
Ce que vous allez apprendre
Vous savez vous connecter à un serveur avec ssh user@ip. Maintenant, rendez votre workflow professionnel : plus de mots de passe, des connexions en un mot, et des transferts de fichiers rapides.
Les clés SSH — fini les mots de passe
Un mot de passe peut être deviné, volé ou intercepté. Une clé SSH est une paire de fichiers cryptographiques :
- Clé privée (
id_ed25519) — reste sur votre ordinateur, ne se partage jamais - Clé publique (
id_ed25519.pub) — placée sur le serveur, peut être partagée
Quand vous vous connectez, SSH vérifie que votre clé privée correspond à la clé publique sur le serveur. Pas de mot de passe échangé, pas d'interception possible.
Générer une paire de clés
ssh-keygen -t ed25519 -C "mon-serveur-production"
Options :
- -t ed25519 : algorithme moderne (préférable à RSA)
- -C "commentaire" : étiquette pour identifier la clé
Appuyez sur Entrée pour accepter l'emplacement par défaut (~/.ssh/id_ed25519).
Vous pouvez définir une passphrase (recommandé) — un mot de passe qui protège votre clé privée locale.
Copier la clé publique sur le serveur
Méthode automatique (recommandée)
ssh-copy-id ubuntu@41.190.32.14
Cette commande copie votre clé publique dans ~/.ssh/authorized_keys sur le serveur. Vous devrez entrer votre mot de passe une dernière fois.
Méthode manuelle
# Afficher votre clé publique
cat ~/.ssh/id_ed25519.pub
# Sur le serveur, ajouter la clé
mkdir -p ~/.ssh
echo "votre-cle-publique-ici" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Tester la connexion par clé
ssh ubuntu@41.190.32.14
Si tout est bien configuré, vous vous connectez sans mot de passe.
Utiliser plusieurs clés — spécifier la clé manuellement
Si vous avez plusieurs clés pour différents serveurs :
ssh -i ~/.ssh/ma-cle-specifique ubuntu@41.190.32.14
L'option -i spécifie le fichier de clé privée à utiliser.
Le fichier ~/.ssh/config — simplifier les connexions
Le fichier ~/.ssh/config permet de définir des alias et options pour chaque serveur. Créez-le si il n'existe pas :
nano ~/.ssh/config
Exemple de configuration :
# Serveur de production
Host production
HostName 41.190.32.14
User ubuntu
IdentityFile ~/.ssh/id_ed25519
Port 22
# Serveur de staging
Host staging
HostName 41.190.32.99
User ubuntu
IdentityFile ~/.ssh/id_ed25519_staging
Port 2222
# Serveur de développement
Host dev
HostName 192.168.1.100
User developer
IdentityFile ~/.ssh/id_ed25519_dev
Désormais, au lieu de ssh ubuntu@41.190.32.14, vous tapez simplement :
ssh production
ssh staging
ssh dev
Options utiles dans ~/.ssh/config
Host mon-serveur
HostName 41.190.32.14
User ubuntu
IdentityFile ~/.ssh/id_ed25519
# Garder la connexion active (évite les déconnexions)
ServerAliveInterval 60
ServerAliveCountMax 3
# Compression des données (utile sur connexion lente)
Compression yes
# Réutiliser les connexions existantes (plus rapide)
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
SCP — transférer des fichiers
SCP (Secure Copy Protocol) est l'outil classique pour transférer des fichiers via SSH.
# Envoyer un fichier vers le serveur
scp rapport.pdf ubuntu@production:/home/ubuntu/documents/
# Avec l'alias du config
scp rapport.pdf production:/home/ubuntu/documents/
# Télécharger un fichier depuis le serveur
scp production:/var/log/nginx/access.log ./logs-nginx.txt
# Transférer un dossier entier (-r pour récursif)
scp -r ./mon-app production:/var/www/html/
# Afficher la progression (-v pour verbose)
scp -v gros-fichier.zip production:/tmp/
rsync — synchronisation efficace
rsync est plus puissant que SCP. Il ne transfère que les fichiers modifiés — parfait pour déployer une application.
# Synchroniser un dossier local vers le serveur
rsync -avz ./mon-app/ production:/var/www/mon-app/
# Options expliquées :
# -a : mode archive (préserve permissions, dates, liens)
# -v : verbose (affiche les fichiers transférés)
# -z : compression pendant le transfert
# Exclure certains fichiers
rsync -avz --exclude='node_modules' --exclude='.git' ./mon-app/ production:/var/www/
# Simulation (voir ce qui serait transféré sans rien toucher)
rsync -avzn ./mon-app/ production:/var/www/mon-app/
L'agent SSH — gérer vos clés avec passphrase
Si votre clé privée a une passphrase, vous devrez la saisir à chaque connexion. L'agent SSH la mémorise pour la session :
# Démarrer l'agent (souvent automatique sur Linux/macOS)
eval $(ssh-agent -s)
# Ajouter votre clé à l'agent
ssh-add ~/.ssh/id_ed25519
# Lister les clés chargées dans l'agent
ssh-add -l
# Supprimer toutes les clés de l'agent
ssh-add -D
Un exemple concret — déploiement depuis Kinshasa
Un développeur à Kinshasa gère un serveur de production en Afrique du Sud. Son workflow :
# 1. Son fichier ~/.ssh/config contient :
# Host prod → ubuntu@41.190.32.14 avec sa clé dédiée
# 2. Il déploie son application
rsync -avz --exclude='node_modules' --exclude='.env' ./app/ prod:/var/www/app/
# 3. Il se connecte pour redémarrer le serveur
ssh prod "sudo systemctl restart myapp"
# 4. Il vérifie les logs
ssh prod "sudo tail -f /var/log/myapp/app.log"
Tout ça sans jamais taper un mot de passe.
À retenir
- Les clés SSH remplacent les mots de passe — plus sécurisé et plus pratique
ssh-copy-id user@ip— copie automatiquement votre clé publique sur le serveur~/.ssh/config— définissez des alias pour chaque serveur (ex:ssh prod)scp— transférer des fichiers ;rsync— synchroniser efficacement (ne transfère que les différences)- L'agent SSH (
ssh-add) mémorise votre passphrase pendant la session
Prochaine étape
Sécurisez votre serveur SSH contre les attaques : désactivez l'authentification par mot de passe, configurez fail2ban, et maîtrisez les tunnels SSH pour des connexions avancées.