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

Libérez tout le potentiel de Secure Shell (SSH) grâce à ce guide essentiel de la ligne de commande. Apprenez les commandes fondamentales pour une connexion à distance sécurisée, y compris les ports personnalisés et l'exécution de commandes uniques. Maîtrisez l'authentification par clé pour une sécurité renforcée et rationalisez le déplacement des données à l'aide d'outils de transfert de fichiers sécurisés tels que `scp` et `sftp`. Enfin, découvrez des techniques avancées telles que le transfert de port local (local port forwarding) et la configuration du fichier `~/.ssh/config` pour améliorer considérablement votre flux de travail administratif et votre efficacité.

33 vues

Maîtriser SSH : votre guide essentiel de la ligne de commande

Le protocole Secure Shell (SSH) est la pierre angulaire de l'administration distante sécurisée dans les environnements Linux, macOS et de type Unix. Il fournit un canal chiffré pour les services réseau, permettant aux utilisateurs de se connecter en toute sécurité à des systèmes distants, d'exécuter des commandes et de transférer des fichiers sans exposer de données sensibles.

Bien que SSH soit omniprésent, la maîtrise de ses commandes de base et de ses options de configuration peut améliorer considérablement l'efficacité, la sécurité et la fiabilité de votre flux de travail de gestion de serveurs distants. Ce guide est une ressource complète, couvrant les commandes fondamentales nécessaires pour une connexion sécurisée, une gestion efficace des fichiers et des techniques de réseau puissantes comme le transfert de port (port forwarding).


1. Établir une connexion distante sécurisée

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

Syntaxe de connexion de base

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

ssh [user]@[host]
# 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'indicateur (flag) -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 à l'ouverture d'un shell interactif. Vous pouvez exécuter une seule commande sur le serveur distant et faire renvoyer le résultat localement, ce qui est extrêmement utile pour les scripts et les vérifications rapides.

# Exécuter 'ls -l' dans le répertoire /var/log du serveur distant
ssh user@host 'ls -l /var/log'

# Vérifier la disponibilité (uptime) du serveur
ssh user@host uptime

2. Gérer l'authentification avec des clés SSH

L'authentification par mot de passe est vulnérable aux attaques par force brute. Les clés SSH — une paire cryptographique composée d'une clé privée (gardée secrète sur votre machine) et d'une clé publique (placée sur le serveur distant) — offrent une méthode d'authentification beaucoup plus sécurisée.

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. La meilleure pratique consiste à utiliser une phrase de passe forte pour protéger votre clé privée.

ssh-keygen -t rsa -b 4096

Copier la clé publique sur le serveur

L'utilitaire ssh-copy-id est le moyen le plus simple d'installer votre clé publique locale (~/.ssh/id_rsa.pub) dans le fichier ~/.ssh/authorized_keys de l'utilisateur distant, permettant une connexion sans mot de passe.

# Copie la clé publique par défaut sur le serveur et définit les autorisations correctes
ssh-copy-id user@host

Conseil : 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'indicateur -i pour spécifier son chemin lors de la connexion :
bash ssh -i ~/.ssh/my_custom_key user@host

3. Transferts de fichiers sécurisés

SSH fournit deux outils principaux pour le transfert sécurisé de fichiers : scp (Secure Copy) et sftp (Secure File Transfer Protocol).

A. Utilisation de Secure Copy (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 (copy).

Transfert de fichiers du local vers le distant

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

Transfert de fichiers du distant vers le local

# Syntaxe : scp [utilisateur]@[hôte]:/[fichier_distant] [chemin_local]
scp user@dbserver:/var/log/backup.sql .

Copie de répertoires de manière récursive

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

scp -r ~/project_files/ user@buildserver:/home/user/builds/

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 des répertoires distants, lister des fichiers et effectuer plusieurs transferts au cours d'une seule session.

Démarrage d'une session sftp

sftp user@host

Commandes de session sftp courantes

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

4. Technique avancée : Tunneling SSH (Transfert de Port)

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 saut (jump host). 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 jumpbox) sur le port 80.

# Syntaxe : ssh -L [port_local]:[hôte_destination]:[port_destination] [utilisateur]@[jumpbox]
ssh -L 8080:internal-web.lan:80 user@jumpbox -N
  • -L 8080:internal-web.lan:80 : Le trafic arrivant sur votre machine locale sur le port 8080 est transféré vers internal-web.lan sur le port 80, via jumpbox.
  • -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 vers http://localhost:8080 dans votre navigateur local.

5. Améliorer l'efficacité avec le fichier de configuration SSH

Taper manuellement des commandes SSH complexes, y compris les ports personnalisés, les noms d'utilisateur et les 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
Host dev-web
    HostName 10.0.0.50
    User deployment_user
    Port 2222
    IdentityFile ~/.ssh/id_rsa_dev

# Serveur 2 : Accès via Jumpbox nécessitant une authentification par clé
Host production-db
    HostName 203.0.113.10
    User sysadmin
    IdentityFile ~/.ssh/prod_key
    LocalForward 54320 127.0.0.1:5432

Connexion avec des alias

Une fois configuré, la connexion devient beaucoup plus simple :

# Se connecte à 10.0.0.50 sur le port 2222 en tant que deployment_user
ssh dev-web

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

Conclusion

SSH est un outil puissant et flexible, essentiel pour l'administration moderne des systèmes. En allant au-delà de la commande de base ssh user@host, en adoptant l'authentification par clé, en tirant parti des utilitaires de transfert de fichiers sécurisés comme scp et sftp, et en maîtrisant les fichiers de configuration, vous débloquez un environnement d'accès distant très efficace et sécurisé. La pratique continue de ces commandes fondamentales vous assure de pouvoir gérer et interagir avec votre infrastructure distante de manière efficace et sécurisée.