Dans le post précédent, nous avons préparé l'accès SSH sécurisé grâce à la génération de clés SSH (Key Generation).
Voir le post précédent : SSH keygen : guide complet pour les débutants
Il est maintenant temps d'apprendre comment se connecter à un serveur distant en utilisant SSH. Les commandes SSH sont plus simples qu'on ne le pense, mais connaître quelques principes et options utiles peut rendre leur utilisation beaucoup plus efficace.
Comment rédiger une commande SSH ?
Le format de base d'une commande SSH est le suivant :
ssh [options] [nom_utilisateur]@[adresse_hôte] [commande]
Examinons chaque élément en détail :
-
ssh
: C'est la commande qui exécute le client SSH. -
[options]
: Vous pouvez spécifier diverses options qui contrôlent la manière d'accéder à SSH. Par exemple, vous pouvez utiliser un fichier clé spécifique ou configurer le port forwarding. (Nous en discuterons plus en détail plus tard.) -
[nom_utilisateur]
: C'est le nom du compte utilisateur sur le serveur distant auquel vous souhaitez vous connecter. Si le nom d'utilisateur de votre ordinateur local est le même que celui du serveur distant, il peut être omis. -
[adresse_hôte]
: C'est l'adresse IP ou le nom de domaine du serveur distant auquel vous souhaitez vous connecter. -
[commande]
(facultatif) : Si vous avez une commande que vous souhaitez exécuter immédiatement après vous être connecté au serveur distant, entrez-la ici. Après l'exécution de cette commande, la session SSH se terminera. Si vous omettez cet élément, vous serez connecté au serveur et pourrez utiliser un shell interactif.
Principes de rédaction de commandes et astuces faciles à retenir
La commande SSH a une structure qui clarifie « quel utilisateur se connecte à quel serveur ? »
-
Principe de base :
ssh nom_utilisateur@adresse_hôte
- Exemple :
ssh ubuntu@192.168.1.100
(connexion au compteubuntu
sur le serveur 192.168.1.100) - Exemple :
ssh root@mywebserver.com
(connexion au compteroot
sur le serveurmywebserver.com
) -
Astuce facile à retenir :
-
« Je (utilisateur local) veux entrer par là (serveur distant) en tant que qui (utilisateur distant) ! » Pensez à cela.
ssh
(je me connecte)[nom_utilisateur]@
(qui)[adresse_hôte]
(où)- Pour les serveurs que vous visitez souvent, vous pouvez utiliser le fichier
~/.ssh/config
pour vous connecter facilement sans entrer chaque fois la longue adresse. (Nous aborderons cela plus en détail dans le prochaine post !)
- Exemple :
Découverte des options SSH utiles
SSH propose plusieurs options qui fournissent des fonctionnalités puissantes adaptées à différentes situations. Voici quelques options clés à connaître.
1. -i <IdentityFile>
: Spécifier un fichier de clé privée particulier
Lorsque vous avez plusieurs clés SSH et que vous souhaitez utiliser une clé privée spécifique pour vous connecter à un certain serveur, utilisez cette option. Par défaut, ~/.ssh/id_rsa
ou ~/.ssh/id_ed25519
est utilisé, mais cela est utile si vous avez généré sous un autre nom ou si vous gérez plusieurs clés.
- Utilisation :
ssh -i ~/.ssh/my_custom_key ubuntu@my_server.com
-
Exemple :
ssh -i ~/.ssh/id_ed25519_my_server ubuntu@example.com
Entrer la phrase secrète pour la clé '/home/youruser/.ssh/id_ed25519_my_server':
2. -p <Port>
: Spécifier le port SSH du serveur distant
La plupart des serveurs SSH utilisent par défaut le port 22. Cependant, pour des raisons de sécurité, les administrateurs changent souvent le port SSH. Dans ce cas, vous devez utiliser l'option -p
pour spécifier le numéro du port modifié.
- Utilisation :
ssh -p 2222 votre_utilisateur@votre_serveur.com
(connection au port 2222) -
Exemple :
ssh -p 2222 myuser@192.168.1.100 L'authenticité de l'hôte '192.168.1.100:2222 (...)' ne peut être établie. Êtes-vous sûr de vouloir continuer à vous connecter (yes/no/[empreinte]) ? yes Avertissement : Ajouté de manière permanente '192.168.1.100:2222' (ED25519) à la liste des hôtes connus. Dernière connexion : Lun 17 juin 10:00:00 2024 de votre_ip myuser@server:~ $
3. -X
: Activer le transfert X11 (exécuter des programmes graphiques)
Utilisez cette option si une application GUI (Interface Utilisateur Graphique) est installée sur le serveur distant et que vous souhaitez l'afficher sur l'écran de votre ordinateur local. Utilisant le système X Window, un serveur X doit être en cours d'exécution sur le système local (macOS nécessite XQuartz, Windows nécessite PuTTY + VcXsrv, etc.).
- Utilisation :
ssh -X votre_utilisateur@votre_serveur.com
-
Exemple :
ssh -X myuser@remote-gui-server.com myuser@remote-gui-server:~ $ firefox &
Après la connexion, exécutez firefox sur le serveur distant (la fenêtre firefox s'affiche sur l'écran local).
En cas de mauvaise performance ou de latence réseau, cela peut être gênant.
4. -L <LocalPort>:<RemoteHost>:<RemotePort>
: Transfert de port local
Cela permet de transmettre les connexions venant d'un port spécifique sur votre ordinateur local (LocalPort) vers un port spécifique sur le serveur distant (RemoteHost) via un tunnel SSH. Cela est principalement utile pour accéder à des services derrière un pare-feu ou pour qu'une application développée localement puisse accéder à une base de données distante.
- Utilisation :
ssh -L 8080:localhost:80 votre_utilisateur@votre_serveur.com
- Cette commande transmet toutes les connexions entrantes au port 8080 de votre ordinateur local à travers
your_server.com
vers le port 80 interne deyour_server.com
(localhost:80
signifie en fait le serveur lui-même).
- Cette commande transmet toutes les connexions entrantes au port 8080 de votre ordinateur local à travers
-
Exemple :
-
Lorsque vous ne pouvez pas accéder directement au serveur web (port 80) du serveur distant et que seulement SSH est possible :
ssh -L 8080:localhost:80 myuser@my_web_server.com
Après avoir exécuté cette commande, en accédant à http://localhost:8080 dans votre navigateur web local,
vous accéderez en réalité au port 80 de my_web_server.com. -
Lorsque votre application
my_db_app
doit accéder au port MySQL 3306 du serveurdb_server.internal
, mais quedb_server.internal
n'est accessible que depuismy_app_server.com
:ssh -L 3307:db_server.internal:3306 myuser@my_app_server.com
Après avoir exécuté cette commande, si
my_db_app
sur votre ordinateur local se connecte à localhost:3307,
il se connectera au port 3306 dedb_server.internal
viamy_app_server.com
.-
(On utilise 3307 car il est possible qu'un MySQL utilise déjà le port 3306 sur votre ordinateur local.)
-
-
5. -N
: Maintenir le transfert de port sans exécuter de commande distante
Utilisé avec l'option -L
ou -D
(Dynamic Port Forwarding, proxy SOCKS), cela ouvre une session SSH mais n'exécute pas de commande shell sur le serveur distant, maintenant uniquement la fonction de transfert de port. Cela est souvent utile pour maintenir un tunnel de transfert de port en arrière-plan.
- Utilisation :
ssh -N -L 8080:localhost:80 votre_utilisateur@votre_serveur.com
-
Exemple :
ssh -N -L 8080:localhost:80 myuser@my_web_server.com &
Ouvrez un tunnel de transfert de port en arrière-plan (&) et accédez à l'aide d'un navigateur web local
6. -f
: Passer la session SSH en arrière-plan
C'est une option qui envoie le processus client SSH en arrière-plan après une connexion SSH réussie. Elle est généralement utilisée avec l'option -N
pour maintenir un tunnel de transfert de port en arrière-plan.
- Utilisation :
ssh -f -N -L 8080:localhost:80 votre_utilisateur@votre_serveur.com
-
Exemple :
ssh -f -N -L 8080:localhost:80 myuser@my_web_server.com
Cette commande retournera immédiatement le contrôle du terminal, et le tunnel SSH s'exécutera en arrière-plan.
Vous pouvez vérifier le processus avec la commande ps aux | grep ssh
Conclusion
Dans ce post, nous avons exploré la structure de base des commandes SSH ainsi que quelques options clés fréquemment utilisées. En particulier, le portage spécifié avec -p
et le port forwarding avec -L
sont très souvent utilisés en pratique, donc il est fortement recommandé de maîtriser ces concepts.
Dans le prochain post, nous apprendrons comment gérer l'accès SSH de manière plus pratique en utilisant le fichier ~/.ssh/config
. Si vous avez des questions, n'hésitez pas à les laisser dans les commentaires !
Aucun commentaire.