Outils pour utilisateurs

Outils du site


cours:informatique:sysadmin:administrer_un_systeme_linux:330_transfert_fichiers_via_reseau

Notes et transcriptions du cours “Administrez un système Linux” disponible sur la plateforme Openclassrooms.

Transférez des fichiers par le réseau

Transférez des fichiers par le réseau

Dans de nombreux cas, un serveur Linux ne sera pas installé en mode graphique. C'est normal, c'est un serveur. La couche graphique est inutile : elle représente des failles potentielles de sécurité supplémentaires, et prendra des ressources matérielles pour rien.

Le seul outil de communication constant et fiable avec le serveur reste donc le terminal. Cependant, certaines tâches sont moins intuitives avec un terminal que lorsque vous disposez d'une belle interface graphique. Elles sont peut être moins intuitives, mais elles restent possibles.

Dans ce chapitre, je vous propose d'étudier spécifiquement les tâches de téléchargement et de transfert de fichiers à partir d'un terminal. Nous verrons dans un premier temps les deux logiciels les plus utilisés pour télécharger des fichiers en HTTP sur le réseau, à savoir wget et curl.

Nous verrons ensuite comment transférer des fichiers d'un serveur à l'autre de manière sécurisée en utilisant le protocole SSH.

Enfin, nous verrons comment se connecter et transférer des fichiers à partir d'un client FTP/SFTP.

Téléchargez sur internet avec wget et curl

Les deux logiciels les plus utilisés sous Linux pour télécharger des fichiers depuis un terminal sont wget et curl. Ces logiciels offrent des fonctionnalités assez similaires et font partie du trousseau des indispensables d'un administrateur Linux.

wget est un projet GNU. Ce petit logiciel permet de télécharger des fichiers en utilisant les protocoles Internet communs, comme HTTP, ou FTP.

Il est possible de l'installer depuis les sources, ou alors d'utiliser le package mis à disposition par les distributions. Son utilisation est assez simple et intuitive, pour télécharger un fichier, en passant l'URL complète du fichier en paramètre

curl s'appuie sur les librairies partagées libcurl, il est diffusé sous licence MIT.

Dans le périmètre des fonctionnalités de base, il est comparable à wget, à une différence non négligeable : il ne propose pas de téléchargement récursif. C'est la raison principale pour laquelle je choisis directement le premier plutôt que le second.

Par contre, de son côté, curl se distingue par sa liste étendue de protocoles compatibles (DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, telnet and TFTP).

Pour plus d'informations, vous pouvez vous rendre sur le site de référence de curl.

# Installer
apt-get install wget
 
# Télécharger une ressource via son URL
wget "https://a-distant-ressource"
 
# Téléchargement récursif
wget -r "https://a-distant-ressource"
 
# Spécifier les URL dans un fichier
wget -i ./list.txt
 
# Spécifier le nom du fichier en local
wget -O filename "https://a-distant-ressource"
 
# Utiliser le protocole FTP
wget --ftpuser=user --ftpassword=pass "/directory/file"

Avec curl

# Installer
apt-get install curl
 
# Télécharger via une URL
curl -o ~/ouputfile -O "https://a-distant-ressource"
 
# Utiliser ftp
curl --user=username:password -O "ftp://directory/file"
 
# On peut spécifier plusieurs URL en répétant l'option -O
curl -O https://url1 -O https://url2
 
# Pour les fichiers de taille importante l'option -C permet
# de reprendre un téléchargement interrompu
 
curl -C -O "https://url-to-big-file.iso"

Transférez des fichiers par SSH

Les utilitaires curl et wget vont surtout être utilisés pour les téléchargement de fichiers hébergés sur Internet ou via des services HTTP ou FTP. Mais il est également possible de transférer des fichiers d'un serveur ne disposant que du service SSH.

Pour cela, nous allons utiliser un autre logiciel de la brique OpenSSH : scp.

L'objectif de scp est de fournir une fonctionnalité de transfert de fichier sécurisée en s'appuyant sur le protocole SSH.

Pour cela, scp va tout simplement utiliser le client ssh. La seule condition de son utilisation étant bien entendu de posséder un compte de connexion et un service SSH en écoute.

Voyons maintenant comment :

  • Transférer de manière sécurisée des fichiers via le protocole SSH et la commande scp ;
  • Indiquer vos paramètres de connexion au service SSH distant le tout sans saisie de mot de passe en utilisant vos propres clés SSH. En effet, en dehors du fait d’être encore plus sécurisée, cette démarche est également très pratique pour automatiser les transferts !
# Copier le fichier local sur le serveur distant
# le fichier sera la propriété de user
 
scp ./localfile user@server:/directory/file
 
# Récupérer le fichier distant en local
scp user@serveur:/directory/file ./myLocalCopy
 
# Spécifier le port
scp -P 2202 sourceFile user@server:/directory/destinationFile
 
# Copie récursive
scp -r sourceDirectory destinationDirectory 

Transférez des fichiers par FTP/FTPS/SFTP

Dernier cas de figure : vous disposez de manière tout à fait logique d'une interface graphique sur votre poste de travail. Vous pouvez alors profiter des logiciels clients graphiques permettant de transférer des fichiers.

Dans certains cas, je pense notamment aux serveurs de fichiers publics, vous allez utiliser le protocole FTP. Mais ce dernier tend à disparaître, car par défaut les flux transitant sur le réseau pendant les échanges ne sont pas chiffrés.

Il est nécessaire de coupler le serveur FTP avec un certificat TLS/SSL, pour obtenir un service FTPS. Mais c'est une autre histoire.

Par contre, sur un serveur disposant d'un accès SSH, il est possible de faire du “FTP par SSH”, aussi nommé SFTP.

Le principe est le suivant :

  • Définition d'un nouveau protocole de communication s'appuyant sur SSH spécialisé dans la gestion des fichiers,
  • Utilisation d'un programme comme client SFTP.

Alors, idem que pour scp, SFTP reposant sur SSH va utiliser les principes de cryptographie asymétrique. Il suffit d'utiliser un logiciel compatible pour bénéficier de ses fonctionnalités.

Par exemple, FileZilla est, à l'origine, un logiciel client pour FTP très connu, gratuit et proposé sous licence GNU, compatible avec SFTP.

Il est disponible au téléchargement et il est aussi packagé sous la plupart des distributions. Bien entendu, FileZilla supporte l'authentification par clé SSH.

Depuis la barre d'outils de FileZilla, on peut directement spécifier le protocole et la cible dans le champ Host : sftp://servername. On renseigne les champs Username et Password et le Port du protocole SSH.

En résumé

  • Les commandes wget et curl permettent de télécharger des fichiers depuis un terminal via HTTP ;
  • La commande scp permet de transférer des fichiers de manière sécurisée via le protocole SSH ;
  • Il est possible de faire du “FTP par SSH” avec un client graphique tel que FileZilla.

Votre serveur Linux propose désormais pas mal de services réseaux. Il est peut-être temps de surveiller un peu son activité. Cela tombe bien, c’est justement le sujet de la prochaine partie.

◁ Précédent | ⌂ Retour au sommaire | Suivant ▷

cours/informatique/sysadmin/administrer_un_systeme_linux/330_transfert_fichiers_via_reseau.txt · Dernière modification : 2024/01/28 12:09 de yoann