Bref : dans ce guide, nous aborderons les cas d’utilisation courants de SSH. Nous discuterons également des configurations SSH couramment utilisées qui peuvent être utilisées dans la vie de tous les jours pour augmenter votre productivité.
Enveloppe de protection (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 discuterons de certains des cas d’utilisation populaires de SSH protocole.
Se connecter à l’hôte Linux distant
Il existe différentes manières d’interagir avec des hôtes Linux distants à l’aide de 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 SSH client d’interagir avec l’hôte distant. De nombreux clients basés sur l’interface graphique et l’interface de ligne de commande sont disponibles pour Linux. Cependant, tout au long de ce guide, nous utiliserons un utilitaire de ligne de commande appelé chut. Par défaut, le chut L’utilitaire 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 en utilisant le chut client:
$ ssh -l root 192.168.19.130
Dans cet exemple, nous avons spécifié le nom de connexion à l’aide de la -l
l’option et la destination est 192.168.19.130. La connexion SSH est établie après avoir entré le 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 terminer la session, nous pouvons utiliser le sortir commande ou ctrl+D
combinaison de touches.
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 configurer 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, nous avons juste besoin d’exécuter une ou deux commandes sur l’hôte distant. Dans de tels 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 entre guillemets et séparées par le point-virgule (;)
personnage. 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 le script sur l’hôte distant
Semblable aux commandes, nous pouvons également exécuter un script local sur l’hôte distant. Comprenons cela avec un exemple.
Commencez par créer un script shell simple sur une machine locale avec des autorisations exécutables :
$ cat script.sh hostname pwd
Maintenant, exécutons-le sur l’hôte distant :
$ ssh [email protected] 'bash -s' < ./script.sh
Dans cet exemple, nous avons utilisé le -s
option du bash pour lire le script depuis 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 que les utilisateurs effectuent consiste à copier des répertoires et des 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 script.sh dossier à la /tmp répertoire de l’hôte distant :
$ scp script.sh [email protected]:/tmp
Maintenant, vérifiez que le fichier a été copié :
$ ssh [email protected] '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 le -r
option avec la commande.
Activer la compression pour SSH
SSH prend en charge la compression des données à l’aide de gzip algorithme de compression, qui comprime 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 le -C
option:
$ ssh -C -l root 192.168.19.130 'hostname'
Activer le mode verbeux pour SSH
Les utilisateurs de Linux ont souvent besoin de déboguer des sessions SSH pour étudier divers problèmes de connexion et de configuration SSH. Dans de tels cas, nous pouvons activer le mode verbeux qui imprime les journaux de débogage de la session en cours.
Activons le mode verbeux en utilisant le -v
option:
$ ssh -v -l root 192.168.19.130 hostname
En plus de cela, nous pouvons augmenter le niveau de verbosité en utilisant les multiples -v
options.
-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é sur 2 et fournit des détails sur les activités côté client et côté serveur.-vvv
– définit le niveau de verbosité sur 3 et fournit des informations plus détaillées sur les activités côté client et côté serveur.
Le niveau de verbosité maximum pris en charge par SSH est 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 verbosité 1. De même, debug2 et debug3 représentent les messages de débogage activés par les niveaux de verbosité 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. Discutons des 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 en utilisant le ~ + ctrl + z
séquence de touches.
Tout d’abord, connectez-vous à l’hôte distant et exécutez le nom d’hôte commande:
$ ssh -l root 192.168.19.130 # hostname
Ensuite, pour suspendre la session en cours, tapez d’abord tilde (~)
caractère, puis appuyez sur la ctrl + z
clés. Il est important de noter que le tilde (~)
le caractère ne sera pas affiché sur la sortie standard jusqu’à ce que nous appuyions sur ctrl + z
.
Maintenant, vérifions 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 à nouveau en utilisant le fg commander et exécuter le nom d’hôte commande:
$ fg %1
Terminer la session SSH gelée
Je suis sûr que vous avez dû voir les sessions SSH gelées, qui se produisent lorsque la session est interrompue par un réseau instable. Ici, nous ne pouvons pas interrompre la session en utilisant le sortir commande. Cependant, nous pouvons le terminer en utilisant le "~ + ."
séquence de touches.
Tout d’abord, connectez-vous à l’hôte distant :
$ ssh -l root 192.168.19.130
Utilisez maintenant le "~ + ."
combinaison de touches pour terminer la session en cours.
Dans cet exemple, nous pouvons voir que SSH affiche le message – Connexion au 192.168.19.130 fermée.
Répertorier les séquences d’échappement prises en charge
Une chose intéressante est qu’il existe une séquence d’échappement pour répertorier toutes les séquences d’échappement prises en charge. Nous pouvons utiliser le “~ + ?”
séquence d’échappement pour répertorier les séquences d’échappement prises en charge :
Ici, nous devons appuyer sur la touche Entrée pour sortir du menu d’aide.
Comment configurer SSH sous Linux
Dans cette section, nous aborderons la configuration côté serveur pour renforcer le serveur SSH. Le serveur SSH stocke toute sa configuration dans /etc/ssh/sshd_config dossier. Il est important de noter qu’un accès utilisateur root est requis pour mettre à jour la configuration SSH.
Afficher la bannière SSH
Comme bonne pratique, nous devrions toujours afficher la bannière avant d’établir une connexion SSH. Dans certains cas, cela décourage les utilisateurs non autorisés d’accéder aux hôtes distants. Voyons comment activer ce paramètre étape par étape.
Commencez par créer 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 /etc/ssh/sshd_config fichier et spécifiez le fichier avec le Bannière directif:
Banner /etc/banner.txt
Maintenant, redémarrez le sshd service et mettre fin à la session en utilisant le sortir commande:
# 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 vérifier que le serveur affiche correctement la bannière SSH.
Désactiver la connexion racine SSH
Jusqu’à présent, nous avons utilisé l’utilisateur root pour accéder à l’hôte distant. Cependant, cela va à l’encontre du principe du moindre privilège. Dans un environnement de production, l’accès des utilisateurs root est toujours limité pour améliorer la sécurité.
Nous pouvons utiliser le PermitRootLogin directive pour désactiver la connexion de l’utilisateur root.
Tout d’abord, ouvrez le /etc/ssh/sshd_config fichier et utilisez l’option no
avec le PermitRootLogin directif:
PermitRootLogin no
Maintenant, redémarrez le sshd service et mettre fin à la session en utilisant le sortir commande:
# 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 autoriser 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 s’exécute sur un port différent, c’est-à-dire 8088.
Tout d’abord, ouvrez le /etc/ssh/sshd_config fichier et utiliser le 8088 valeur avec le Port directif:
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é le -p
option 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. Comme l’identification des ports disponibles, la mise à jour des règles de pare-feu, les paramètres SELinux, etc.
Dans cet article, nous avons discuté du protocole SSH et de ses cas d’utilisation courants. Ensuite, nous avons discuté de quelques options courantes. Enfin, nous avons discuté de certains des paramètres pour sécuriser le serveur SSH.
Connaissez-vous une autre meilleure utilisation de la commande SSH sous Linux ? Faites-nous part de vos opinions dans les commentaires ci-dessous.