Introduction
Cet aide-mémoire rassemble les commandes SSH les plus courantes et les options essentielles à connaître au quotidien. Que vous soyez administrateur système, développeur, ingénieur DevOps ou simplement utilisateur souhaitant accéder à un serveur distant, vous y trouverez les exemples pratiques nécessaires pour vous connecter, gérer vos clés SSH, transférer des fichiers et diagnostiquer les problèmes de connexion.
Connexion de base
ssh utilisateur@serveur
Exemple :
Connexion sur un port personnalisé :
ssh -p 2222 utilisateur@serveur
Génération de clés SSH
Créer une clé Ed25519 (recommandé) :
ssh-keygen -t ed25519 -C "[email protected]"
Créer une clé RSA :
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Spécifier un fichier :
ssh-keygen -t ed25519 -f ~/.ssh/ma_cle
Copier une clé publique sur un serveur
Méthode recommandée :
ssh-copy-id utilisateur@serveur
Avec un port personnalisé :
ssh-copy-id -p 2222 utilisateur@serveur
Manuellement :
cat ~/.ssh/id_ed25519.pub | ssh utilisateur@serveur "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Utilisation d’une clé privée
ssh -i ~/.ssh/id_ed25519 utilisateur@serveur
Agent SSH
Démarrer l’agent :
eval "$(ssh-agent -s)"
Ajouter une clé :
ssh-add ~/.ssh/id_ed25519
Lister les clés chargées :
ssh-add -l
Supprimer toutes les clés :
ssh-add -D
Copier des fichiers avec SCP
Copier un fichier vers un serveur :
scp fichier.txt utilisateur@serveur:/tmp/
Copier depuis un serveur :
scp utilisateur@serveur:/tmp/fichier.txt .
Copie récursive :
scp -r dossier utilisateur@serveur:/tmp/
Port personnalisé :
scp -P 2222 fichier.txt utilisateur@serveur:/tmp/
Synchronisation avec rsync via SSH
rsync -avz dossier/ utilisateur@serveur:/backup/
Port personnalisé :
rsync -avz -e "ssh -p 2222" dossier/ utilisateur@serveur:/backup/
Tunnel SSH
Port Forwarding Local
Accéder à un service distant localement :
ssh -L 8080:localhost:80 utilisateur@serveur
Puis ouvrir :
http://localhost:8080
Port Forwarding Distant
Exposer un service local sur le serveur :
ssh -R 8080:localhost:3000 utilisateur@serveur
Proxy SOCKS
ssh -D 1080 utilisateur@serveur
Configurer ensuite le navigateur avec :
SOCKS5 localhost:1080
Exécuter une commande distante
ssh utilisateur@serveur "uptime"
Exemple :
ssh utilisateur@serveur "systemctl status nginx"
Transférer un fichier via stdin
cat fichier.txt | ssh utilisateur@serveur "cat > fichier.txt"
Fichier de configuration SSH
Emplacement :
~/.ssh/config
Exemple :
Host prod
HostName 192.168.1.10
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_ed25519
Connexion simplifiée :
ssh prod
Options utiles
Mode verbeux :
ssh -v utilisateur@serveur
Très verbeux :
ssh -vvv utilisateur@serveur
Désactiver la vérification de clé (temporairement) :
ssh -o StrictHostKeyChecking=no utilisateur@serveur
Spécifier un fichier de configuration :
ssh -F config_custom utilisateur@serveur
Vérification des empreintes
Afficher l’empreinte d’une clé publique :
ssh-keygen -lf ~/.ssh/id_ed25519.pub
Afficher l’empreinte d’une clé distante :
ssh-keyscan serveur | ssh-keygen -lf -
Permissions recommandées
Répertoire SSH :
chmod 700 ~/.ssh
Clé privée :
chmod 600 ~/.ssh/id_ed25519
Clé publique :
chmod 644 ~/.ssh/id_ed25519.pub
authorized_keys :
chmod 600 ~/.ssh/authorized_keys
Débogage rapide
Tester la configuration :
ssh -G utilisateur@serveur
Voir les algorithmes supportés :
ssh -Q cipher
ssh -Q key
ssh -Q mac
Tester uniquement la connexion :
ssh -T utilisateur@serveur
Commandes fréquentes
ssh utilisateur@serveur
ssh -i ~/.ssh/id_ed25519 utilisateur@serveur
ssh -p 2222 utilisateur@serveur
scp fichier.txt utilisateur@serveur:/tmp/
rsync -avz dossier/ utilisateur@serveur:/backup/
ssh-copy-id utilisateur@serveur
ssh-add ~/.ssh/id_ed25519
ssh -L 8080:localhost:80 utilisateur@serveur
Emplacements importants
~/.ssh/config # Config SSH
~/.ssh/authorized_keys # Clé ssh public autorisées
~/.ssh/known_hosts # Les hôtes distants connus avec leurs clés
~/.ssh/id_ed25519 # Clé privé au format ed25519
~/.ssh/id_ed25519.pub # Clé publique au format ed25519