Comment utiliser les tuyaux SSH sous Linux

Comment utiliser les tuyaux SSH sous Linux
Photographie d'un homme travaillant devant son ordinateur.

Les tuyaux UNIX constituent une étape monumentale dans le développement d’UNIX et de systèmes d’exploitation de type UNIX. Il permettait aux utilisateurs d’effectuer des tâches informatiques complexes en reliant les entrées et les sorties de programmes de base. Cet article développe cela en vous montrant comment utiliser un canal UNIX sous Linux sur un réseau avec le protocole SSH.

Comprendre le pipeline Unix

Les tuyaux sous Unix (et par extension, Linux) sont utilisés pour enchaîner des programmes et les faire fonctionner ensemble. Par exemple, en utilisant cat, vous pouvez afficher le contenu d’un fichier, mais si vous avez utilisé un tube (|), vous pouvez enchaîner les < une commande i=3> à la commande pour faciliter la lecture du fichier.catmore

L’idée de base ici est la suivante : program1 fileX | program2. Cependant, cela ne se limite pas à un fichier et à deux programmes. La tuyauterie peut être aussi avancée que nécessaire, avec autant de modificateurs que vous pouvez imaginer.

Voici quelques façons de faire bon usage du tube (|) dans les situations SSH.

Transférer automatiquement les répertoires compressés

L’une des façons les plus courantes d’utiliser les canaux UNIX consiste à stocker la sortie d’un programme dans un fichier quelque part sur le système local. Par exemple, exécuter echo "Hello, MakeTechEasier!"| tee Hello exécutera le programme echo tout en stockant également la chaîne « Hello, MakeTechEasier ! » à l’intérieur du fichier « Bonjour ».

Un terminal affichant une redirection de canal UNIX de base dans une machine locale.

Cela dit, vous pouvez utiliser cette idée pour transférer des répertoires entre deux hôtes Linux. Pour ce faire, lisez le dossier que vous souhaitez envoyer à l’aide de tar, puis redirigez-le vers votre démon SSH :

Cette commande regroupera votre dossier dans une archive tar et l’enverra à la sortie standard de la commande. Le canal UNIX lira ensuite ces données et les enverra à votre hôte Linux distant à l’aide de SSH.

Vous pouvez également inverser cette commande pour extraire vos fichiers des hôtes distants :

Pousser et récupérer des fichiers à partir d’hôtes distants

Vous pouvez également utiliser des canaux et SSH pour envoyer des fichiers individuels sur le réseau. Cela fonctionne en utilisant cat comme moyen de charger le contenu d’un fichier et de l’envoyer via SSH :

L’hôte distant recevra le flux de sortie du processus cat local et reconstruira le fichier tel quel.

Pour récupérer un fichier depuis un hôte distant, vous devez inverser l’ordre de la commande et fournir le chemin de votre fichier distant :

Un terminal affichant le transfert de fichiers individuels à l'aide d'un canal SSH sous Linux.

Sauvegarde et restauration de disques à distance

Semblable à l’envoi de fichiers et de répertoires, il est possible de sauvegarder à distance des lecteurs entiers sous Linux avec un canal UNIX et SSH. Cela peut être utile si vous souhaitez créer des sauvegardes rapides hors site et que vous ne disposez pas de disque physique de rechange pour le moment.

Pour sauvegarder un lecteur entier, exécutez dd avec sa variable « if = » définie sur le lecteur que vous souhaitez sauvegarder, puis redirigez-le vers votre démon SSH :

Inverser cette commande vous permet également de restaurer une image disque d’une machine distante vers un disque physique :

De plus, cette syntaxe de canal SSH fonctionnera également avec des partitions de disque discrètes. Par exemple, si votre système possède une partition /home dans « /dev/sda4 », vous pouvez exécuter la commande suivante pour en créer une sauvegarde :

Redirection de l’entrée audio vers une machine distante

L’un des avantages des canaux SSH est qu’ils vous permettent d’interagir avec des machines distantes comme s’il s’agissait d’une ressource locale. Cela inclut la possibilité d’exploiter les fichiers de l’appareil tels que l’entrée audio d’un système.

Pour ce faire, exécutez un sous-shell ALSA distant à l’aide de SSH et envoyez sa sortie à votre démon ALSA local :

Cela écoutera le périphérique d’entrée audio par défaut sur la machine distante et jouera ce qu’il entend sur votre système. Cela dit, inverser les commandes enverra l’entrée audio de votre machine locale à la sortie audio de votre hôte distant :

Un terminal affichant un flux audio actif utilisant des canaux SSH.

Le canal ALSA SSH fonctionnera également lorsque vous le combinerez avec d’autres outils de lecture audio. Par exemple, vous pouvez envoyer la sortie arecord d’un canal SSH vers ffmpeg :

Diffusion de vidéo en direct à partir d’une webcam distante

Une autre grande utilisation des canaux SSH sous Linux consiste à diffuser des flux vidéo en direct par webcam. Tout comme pour l’audio, cela vous permet de profiter du périphérique d’un hôte distant et de restituer sa sortie sur votre machine locale.

Pour diffuser depuis la webcam d’un hôte distant, exécutez SSH avec un sous-shell ffmpeg, puis dirigez-le vers un client de lecture vidéo sur votre ordinateur local :

Cette commande diffusera la sortie vidéo brute de la première webcam sur votre machine distante.

Une capture d'écran montrant un flux vidéo de webcam actif passant par un canal SSH sous Linux.

Il est également possible d’enregistrer les images de votre webcam distante dans un fichier séparé. Vous pouvez le faire en envoyant les données du canal SSH vers tee avant de les rediriger vers votre lecteur vidéo :

Outre l’audio et la vidéo, vous pouvez également utiliser des canaux SSH pour envoyer du texte brut sur le TTY d’une machine distante. Ceci est utile si vous souhaitez envoyer des messages d’état à un système sans interface graphique.

Pour commencer, créez un canal FIFO sur votre machine locale :

Exécutez une commande d’écoute tail avec votre FIFO et envoyez sa sortie à un démon SSH :

Testez si votre nouveau canal FIFO fonctionne sur le réseau en envoyant des données texte à l’aide de la commande echo :

Un terminal affichant du texte arbitraire dans la console TTY d'une machine.

Transférer des données distantes vers un presse-papiers local

Le plus gros inconvénient d’un presse-papiers système est qu’il ne fonctionne qu’avec la machine locale. C’est un problème si vous travaillez avec plusieurs ordinateurs et que vous souhaitez transférer des données sans créer de fichiers temporaires.

Une façon de résoudre ce problème consiste à créer un canal SSH capable de lire et d’envoyer un fichier distant directement dans le presse-papiers de votre système local :

Cette commande se connectera à votre machine distante, exécutera l’utilitaire cat puis commencera à lire le fichier « ramces.txt ». Une fois cela fait, il renverra les données distantes à votre ordinateur local et les redirigera vers le presse-papiers de votre système.

Un terminal affichant le presse-papiers de la machine locale après un canal SSH.

Vous pouvez également transférer le presse-papiers actuel de votre système sous forme de fichier sur votre ordinateur distant en utilisant la commande suivante :

Apprendre à envoyer des données sur un réseau à l’aide de canaux UNIX et SSH n’est que la première étape pour comprendre le fonctionnement des réseaux informatiques. Apprenez-en davantage sur votre réseau en suivant où vont vos paquets à l’aide de Traceroute.

Crédit image : Mikhail Fesenko via Unsplash. Toutes les modifications et captures d’écran par Ramces Red.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *