SSH Cheat Sheet

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