Utilisation et configuration des commandes SSH les plus courantes sous Linux
Bref : Dans ce guide, nous aborderons les cas d’utilisation courants de SSH. Nous aborderons également les configurations SSH couramment utilisées qui peuvent être utilisées dans la vie quotidienne pour augmenter votre productivité. :
Secure Shell (SSH) est un protocole réseau largement adopté, qui nous permet d’interagir avec des hôtes distants de manière sécurisée. Il assure la sécurité en cryptant toutes les communications entre eux.
Comment utiliser la commande SSH sous Linux
Dans cette section, nous aborderons certains des cas d’utilisation les plus courants du protocole SSH.
Se connecter à un hôte Linux distant
Il existe différentes façons d’interagir avec des hôtes Linux distants en utilisant des protocoles tels que telnet, ftp, netcat, etc. Cependant, ceux-ci ne sont pas sécurisés en raison de l’absence de cryptage. Nous pouvons utiliser le protocole SSH pour permettre une communication sécurisée entre les hôtes.
Nous devons utiliser un client SSH pour interagir avec l’hôte distant. Il existe de nombreux clients basés sur une interface graphique et une interface de ligne de commande disponibles pour Linux. Cependant, tout au long de ce guide, nous utiliserons un utilitaire de ligne de commande appelé ssh. Par défaut, l’utilitaire ssh est disponible sur la plupart des distributions Linux.
La syntaxe de la commande SSH est la suivante :
$ ssh [OPTIONS] [COMMANDS] [ARGS]
Ici, les crochets ([]) représentent les arguments facultatifs tandis que les crochets angulaires (<>) représentent les arguments obligatoires.
Connectons-nous à l’hôte distant à l’aide du client ssh :
$ ssh -l root 192.168.19.130
Dans cet exemple, nous avons spécifié le nom de connexion à l’aide de l’option -l et la destination est 192.168.19.130. La connexion SSH est établie après la saisie du mot de passe correct. À partir de maintenant, nous pouvons exécuter les commandes sur l’hôte distant tout comme le système local.
# hostname
Pour mettre fin à la session, nous pouvons utiliser la commande exit ou la combinaison de touches ctrl+D.
Il est important de noter que nous devons nous authentifier auprès de l’hôte distant pour chaque nouvelle session. Pour éviter de saisir des mots de passe à chaque fois, nous pouvons mettre en place une connexion SSH sans mot de passe.
Exécuter des commandes sur l’hôte distant
Dans la section précédente, nous avons vu comment établir une connexion avec un hôte distant, ce qui ne convient que lorsque nous allons utiliser l’hôte distant pendant une durée plus longue. Parfois, il suffit d’exécuter une ou deux commandes sur l’hôte distant. Dans ce cas, nous pouvons exécuter ces commandes sans créer de session à long terme.
Exécutons la commande hostname sur l’hôte distant :
$ ssh -l root 192.168.19.130 hostname
De la même manière, nous pouvons exécuter plusieurs commandes sur une machine Linux distante :
$ ssh -l root 192.168.19.130 'hostname; pwd'
Il est important de noter que les commandes doivent être entourées de guillemets et séparées par le point-virgule (;) caractère. Si vous souhaitez exécuter des commandes sur plusieurs hôtes Linux distants, lisez notre article – Pssh – Exécuter des commandes sur plusieurs hôtes Linux distants.
Exécuter un script sur l’hôte distant
Semblable aux commandes, nous pouvons également exécuter un script local sur l’hôte distant. Comprenons-le à l’aide d’un exemple.
Tout d’abord, créez un script shell simple sur une machine locale avec des autorisations exécutables dessus :
$ cat script.sh
hostname
pwd
Maintenant, exécutons-le sur l’hôte distant :
$ ssh [email 'bash -s' < ./script.sh
Dans cet exemple, nous avons utilisé l’option -s du bash pour lire le script à partir de l’entrée standard.
Copier des fichiers entre les hôtes
Nous travaillons très souvent avec les fichiers et les répertoires. Une opération courante effectuée par les utilisateurs est la copie de répertoires et de fichiers. Tout comme les machines locales, nous pouvons copier des fichiers et des répertoires entre les hôtes distants à l’aide de la commande scp, qui copie les fichiers en toute sécurité à l’aide du protocole SSH.
Copions le fichier script.sh dans le répertoire /tmp de l’hôte distant :
$ scp script.sh [email :/tmp
Maintenant, vérifiez que le fichier a été copié :
$ ssh [email 'ls /tmp/script.sh'
De la même manière, nous pouvons utiliser la commande scp pour copier les répertoires. Cependant, nous devons utiliser l’option -r avec la commande.
Activer la compression pour SSH
SSH prend en charge la compression des données à l’aide de l’algorithme de compression gzip, qui compresse tous les flux de données possibles tels que stdin, stdout, stderr, etc. Cette option est très pratique lors de l’utilisation de connexions réseau lentes.
Nous pouvons activer la compression sur SSH en utilisant l’option -C :
$ ssh -C -l root 192.168.19.130 'hostname'
Activer le mode détaillé pour SSH
Les utilisateurs de Linux ont souvent besoin de déboguer des sessions SSH pour enquêter sur divers problèmes liés à la connexion et à la configuration SSH. Dans ce cas, nous pouvons activer le mode verbeux qui imprime les journaux de débogage de la session en cours.
Activons le mode verbeux à l’aide de l’option -v :
$ ssh -v -l root 192.168.19.130 hostname
En plus de cela, nous pouvons augmenter le niveau de verbosité en utilisant les multiples options -v.
-v– définit le niveau de verbosité sur 1 et fournit des détails sur les activités côté client.-vv– définit le niveau de verbosité à 2 et fournit des détails sur les activités côté client et serveur.-vvv– définit le niveau de verbosité à 3 et fournit des informations plus détaillées sur les activités côté client et serveur.
Le niveau de verbosité maximal pris en charge par SSH est de 3. Voyons cela en action :
$ ssh -vvv -l root 192.168.19.130 hostname
Dans l’exemple ci-dessus, debug1 représente le message de débogage activé par le niveau de détail 1. De même, debug2 et debug3 représentent les messages de débogage activés par les niveaux de détail 2 et 3 respectivement.
Séquences d’échappement en SSH
Nous pouvons utiliser des séquences d’échappement avec le SSH pour gérer les sessions du terminal client. Examinons les séquences d’échappement couramment utilisées avec les cas d’utilisation appropriés.
Suspension de la session SSH
Parfois, nous devons effectuer quelques activités sur la machine locale sans mettre fin à la session SSH en cours. Dans un tel scénario, nous pouvons suspendre la session en cours à l’aide de la séquence de touches ~ + ctrl+z.
Tout d’abord, connectez-vous à l’hôte distant et exécutez la commande hostname :
$ ssh -l root 192.168.19.130
hostname
Ensuite, pour suspendre la session en cours, tapez d’abord le caractère tilde (~), puis appuyez sur les touches ctrl+z. Il est important de noter que le caractère tilde (~) ne sera pas affiché sur le stdout tant que nous n’aurons pas appuyé sur ctrl+z.
Vérifions maintenant que la session a été suspendue :
$ jobs
Ici, nous pouvons voir que la session SSH actuelle s’exécute en arrière-plan.
Reprenons la session à l’aide de la commande fg et exécutons la commande hostname :
$ fg %1
Mettre fin à la session SSH gelée
Je suis sûr que vous devez avoir vu les sessions SSH gelées, qui se produisent lorsque la session est interrompue par un réseau instable. Ici, nous ne pouvons pas abandonner la session à l’aide de la commande exit. Cependant, nous pouvons le terminer en utilisant la séquence de touches « ~ + . » .
Tout d’abord, connectez-vous à l’hôte distant :
$ ssh -l root 192.168.19.130
Utilisez maintenant la combinaison de touches « ~ + . » pour mettre fin à la session en cours.
Dans cet exemple, nous pouvons voir que SSH affiche le message – Connexion à 192.168.19.130 fermée.
Liste des séquences d’échappement prises en charge
Ce qui est intéressant, c’est qu’il existe une séquence d’échappement pour répertorier toutes les séquences d’échappement prises en charge. Nous pouvons utiliser la séquence d’échappement « ~ + ? » " pour lister les séquences d’échappement prises en charge :
Ici, il faut appuyer sur la touche Entrée pour sortir du menu d’aide.
Comment configurer SSH sous Linux
Dans cette section, nous allons aborder la configuration côté serveur pour renforcer le serveur SSH. Le serveur SSH stocke toute sa configuration dans le fichier /etc/ssh/sshd_config. Il est important de noter que l’accès de l’utilisateur root est requis pour mettre à jour la configuration SSH.
Afficher la bannière SSH
Il est recommandé de toujours afficher la bannière avant d’établir une connexion SSH. Dans certains cas, il décourage les utilisateurs non autorisés d’accéder aux hôtes distants. Voyons comment activer ce paramètre étape par étape.
Tout d’abord, créez un fichier texte sur un serveur distant avec un message d’avertissement :
# vi /etc/banner.txt
Ensuite, ajoutez le message de bannière suivant :
*********************************************************************
Warning !!! You are trying to log in to techmint.com's server.
All the activities on this server are monitored.
Terminate the session immediately if you are not an authorized user.
*********************************************************************
Ensuite, ouvrez le fichier /etc/ssh/sshd_config et spécifiez le fichier avec la directive Banner :
Banner /etc/banner.txt
Maintenant, redémarrez le service sshd et terminez la session à l’aide de la commande exit :
# systemctl restart sshd
exit
Enfin, vérifiez la bannière en vous connectant à l’hôte distant :
$ ssh -l root 192.168.19.130
Ici, nous pouvons faire en sorte que le serveur affiche correctement le bandeau SSH.
Désactiver la connexion racine SSH
Jusqu’à présent, nous utilisions l’utilisateur root pour accéder à l’hôte distant. Toutefois, cela va à l’encontre du principe du moindre privilège. Dans un environnement de production, l’accès de l’utilisateur racine est toujours restreint pour améliorer la sécurité.
Nous pouvons utiliser la directive PermitRootLogin pour désactiver la connexion de l’utilisateur root.
Tout d’abord, ouvrez le fichier /etc/ssh/sshd_config et utilisez l’option no avec la directive PermitRootLogin :
PermitRootLogin no
Maintenant, redémarrez le service sshd et terminez la session à l’aide de la commande exit :
# systemctl restart sshd
exit
Enfin, vérifiez cela en créant une nouvelle session SSH :
$ ssh -l root 192.168.19.130
Ici, nous pouvons observer que nous ne pouvons pas nous connecter à l’hôte distant avec l’utilisateur root. Pour permettre la connexion de l’utilisateur root, nous pouvons utiliser l’option yes avec la même directive.
Modifier le port SSH par défaut
Par défaut, SSH utilise le port TCP 22. Cependant, nous pouvons configurer SSH pour qu’il fonctionne sur un port différent, c’est-à-dire 8088.
Tout d’abord, ouvrez le fichier /etc/ssh/sshd_config et utilisez la valeur 8088 avec la directive Port :
Port 8088
Ensuite, redémarrez le service sshd et terminez la session :
# systemctl restart sshd
exit
Maintenant, connectons-nous à l’hôte distant :
$ ssh -p 8088 -l root 192.168.19.130
Dans cet exemple, nous avons utilisé l’option -p pour spécifier le numéro de port.
Dans certains cas, nous devons effectuer quelques autres étapes pour autoriser la communication sur un port autre que celui par défaut. Tels que l’identification des ports disponibles, la mise à jour des règles de pare-feu, les paramètres SELinux, etc.
Dans cet article, nous avons abordé le protocole SSH et ses cas d’utilisation courants. Ensuite, nous avons discuté de quelques options courantes. Enfin, nous avons abordé certains des paramètres pour sécuriser le serveur SSH.
Connaissez-vous d’autres meilleures utilisations de la commande SSH sous Linux ? Faites-nous part de votre point de vue dans les commentaires ci-dessous. :











