Maîtriser SSH : Votre Guide Indispensable en Ligne de Commande

Apprenez les commandes SSH pratiques pour la connexion, les clés, le transfert de fichiers, le transfert de port et la configuration d'hôte réutilisable.

Maîtrisez SSH : Votre Guide Essentiel en Ligne de Commande

Le protocole Secure Shell (SSH) vous offre un moyen chiffré de vous connecter à des systèmes distants, d'exécuter des commandes et de transférer des fichiers. Si vous gérez des serveurs, quelques habitudes avec la ligne de commande SSH rendent votre travail plus rapide et plus sûr.

Ce guide couvre les commandes que vous utiliserez le plus : connexion à distance, authentification par clé, scp, sftp, transfert de port local et alias ~/.ssh/config.

Établir une Connexion Distante Sécurisée

L'utilisation la plus fréquente de SSH est la sécurisation d'une connexion terminal vers un serveur distant. La syntaxe de base est simple, mais il existe des options cruciales pour une sécurité et une convivialité renforcées.

Syntaxe de Connexion de Base

La commande standard nécessite de spécifier l'utilisateur distant et l'adresse de l'hôte (IP ou nom de domaine) :

ssh [utilisateur]@[hôte]
# Exemple :
ssh [email protected]

Spécifier un Port Non Standard

Pour des raisons de sécurité, de nombreux administrateurs modifient le port SSH par défaut (Port 22). Utilisez l'option -p pour spécifier un numéro de port différent :

ssh -p 2222 [email protected]

Exécuter des Commandes Distantes Uniques

SSH ne se limite pas à ouvrir un shell interactif. Vous pouvez exécuter une seule commande sur le serveur distant et obtenir la sortie localement, ce qui est extrêmement utile pour les scripts et les vérifications rapides.

# Exécute 'ls -l' sur le répertoire /var/log du serveur distant
ssh utilisateur@hôte 'ls -l /var/log'

# Vérifie la durée de fonctionnement du serveur
ssh utilisateur@hôte uptime

Gérer l'Authentification avec les Clés SSH

L'authentification par mot de passe est souvent exposée aux attaques par force brute. Les clés SSH utilisent une clé privée sur votre machine et une clé publique sur le serveur distant, de sorte que le serveur peut vous vérifier sans recevoir votre mot de passe.

Générer des Paires de Clés

Si vous n'avez pas encore de paire de clés, vous pouvez en générer une en utilisant ssh-keygen. Il est recommandé d'utiliser une phrase de passe forte pour protéger votre clé privée.

ssh-keygen -t ed25519 -C "[email protected]"

Les clés RSA sont encore courantes, en particulier pour les systèmes plus anciens. Pour une nouvelle clé sur une configuration OpenSSH moderne, Ed25519 est généralement le choix par défaut le plus simple.

Copier la Clé Publique sur le Serveur

L'utilitaire ssh-copy-id est le moyen le plus simple d'installer votre clé publique locale dans le fichier ~/.ssh/authorized_keys de l'utilisateur distant. Vous entrez normalement votre mot de passe une fois, puis les connexions futures peuvent utiliser la clé.

# Copie votre clé publique par défaut sur le serveur et définit les permissions courantes
ssh-copy-id utilisateur@hôte

Astuce : Utilisation de la Clé Privée Si votre clé privée n'est pas à l'emplacement par défaut (~/.ssh/id_rsa), vous devez utiliser l'option -i pour spécifier son chemin lors de la connexion :

ssh -i ~/.ssh/ma_cle_personnalisee utilisateur@hôte

Transferts de Fichiers Sécurisés

SSH fournit deux outils principaux pour le transfert sécurisé de fichiers : scp (Copie Sécurisée) et sftp (Protocole de Transfert de Fichiers Sécurisé).

A. Utilisation de la Copie Sécurisée (scp)

scp est idéal pour les transferts de fichiers simples, rapides et ponctuels, offrant une interface en ligne de commande calquée sur la commande Unix standard cp (copie).

Transférer des Fichiers du Local vers le Distant

# Syntaxe : scp [fichier_local] [utilisateur]@[hôte]://[chemin_distant]
scp archive_deploiement.tar.gz utilisateur@serveurweb:/var/www/uploads/

Transférer des Fichiers du Distant vers le Local

# Syntaxe : scp [utilisateur]@[hôte]://[fichier_distant] [chemin_local]
scp utilisateur@serveurbdd:/var/log/sauvegarde.sql .

Copier des Répertoires de Manière Récursive

Utilisez l'option -r pour copier des structures de répertoires entières.

scp -r ~/fichiers_projet/ utilisateur@serveurconstruction:/home/utilisateur/constructions/

B. Utilisation du Protocole de Transfert de Fichiers Sécurisé (sftp)

sftp établit une session interactive, similaire à un client FTP traditionnel, mais sécurisée via SSH. Il est mieux adapté pour naviguer dans les répertoires distants, lister les fichiers et effectuer plusieurs transferts au sein d'une même session.

Démarrer une Session sftp

sftp utilisateur@hôte

Commandes Courantes d'une Session sftp

Commande Description
ls Lister les fichiers distants
lls Lister les fichiers locaux
get nom_fichier Télécharger un fichier depuis le serveur distant
put nom_fichier Télécharger un fichier vers le serveur distant
cd /chemin/ Changer de répertoire distant
lcd /chemin/ Changer de répertoire local
quit Quitter la session sftp

Tunnel SSH avec Transfert de Port Local

Le tunneling SSH, ou transfert de port, vous permet de chiffrer les connexions pour des protocoles non sécurisés ou d'accéder à des services sur un réseau interne via un hôte de rebond. La forme la plus courante est le transfert de port local.

Transfert de Port Local (-L)

Le transfert local achemine le trafic d'un port sur votre machine locale vers un port spécifié sur un hôte distant via le serveur SSH. Ceci est utile pour accéder à des bases de données internes, des interfaces web ou des services propriétaires qui ne sont pas directement exposés à l'internet public.

Scénario : Vous souhaitez accéder à un serveur web interne privé (accessible uniquement depuis serveur_de_rebond) sur le port 80.

# Syntaxe : ssh -L [port_local]:[hôte_destination]:[port_destination] [utilisateur]@[serveur_de_rebond]
ssh -L 8080:web-interne.lan:80 utilisateur@serveur_de_rebond -N
  • -L 8080:web-interne.lan:80 : Le trafic arrivant sur votre machine locale sur le port 8080 est redirigé vers web-interne.lan sur le port 80, via serveur_de_rebond.
  • -N : Indique à SSH de ne pas exécuter de commande distante ; il établit simplement le tunnel.

Une fois la connexion établie, vous pouvez accéder au site interne en naviguant dans votre navigateur local vers http://localhost:8080.

Améliorer l'Efficacité avec le Fichier de Configuration SSH

Taper manuellement des commandes SSH complexes, incluant des ports personnalisés, des noms d'utilisateur et des chemins de clés, est inefficace. Le fichier de configuration SSH (~/.ssh/config) vous permet de définir des alias et des paramètres pour les serveurs fréquemment consultés.

Exemple de Configuration (~/.ssh/config)

Créez ou modifiez le fichier ~/.ssh/config avec la structure suivante :

# Serveur 1 : Clé standard, port non standard
Hôte dev-web
    NomHôte 10.0.0.50
    Utilisateur utilisateur_deploiement
    Port 2222
    FichierIdentite ~/.ssh/id_rsa_dev

# Serveur 2 : Accès via serveur de rebond nécessitant une authentification par clé
Hôte production-bdd
    NomHôte 10.0.20.15
    Utilisateur admin_systeme
    FichierIdentite ~/.ssh/cle_prod
    TransfertLocal 54320 127.0.0.1:5432

Dans ce deuxième exemple, ssh production-bdd ouvre un port local sur votre poste de travail. Vous pouvez ensuite pointer un client PostgreSQL vers localhost:54320, et SSH achemine le trafic vers 127.0.0.1:5432 tel que vu depuis l'hôte distant.

Se Connecter avec des Alias

Une fois configuré, se connecter devient considérablement plus simple :

# Se connecte à 10.0.0.50 sur le port 2222 en tant qu'utilisateur_deploiement
ssh dev-web

# Se connecte et configure automatiquement le transfert de port (si configuré)
ssh production-bdd

Point Clé à Retenir

Commencez par ssh utilisateur@hôte, ajoutez l'authentification par clé et déplacez les options répétées dans ~/.ssh/config. Une fois ces bases solides, le transfert local avec ssh -L vous offre un moyen contrôlé d'atteindre des services privés sans les exposer directement au réseau.