Présentation
SFTP (Safe File Transfer Protocol) est inclus avec SSH comme moyen sécurisé de transférer des fichiers entre des systèmes distants. Il permet également aux utilisateurs d'effectuer des tâches administratives de base sur des serveurs distants, telles que la gestion de fichiers et de répertoires et la définition d'autorisations de fichiers.
Dans ce didacticiel, nous allons vous montrer comment utiliser SFTP pour transférer des fichiers entre un système local et un système distant à l'aide de l'interface du terminal.

Prérequis
- Accès à un système local et à un serveur distant, connectés à l'aide d'une paire de clés publiques SSH.
- Une connexion Internet fonctionnelle.
- Accès à la fenêtre du terminal.
Comment se connecter à l'aide de SFTP
SFTP établit une connexion sécurisée entre les systèmes en utilisant le protocole réseau SSH. Cela vous permet de vous connecter à n'importe quel système disposant d'une copie de votre clé SSH publique.
La connexion à un autre système à l'aide de SFTP suit la même syntaxe de commande que la connexion à l'aide de SSH. La commande vous demande de fournir un nom d'utilisateur et un nom d'hôte distant ou une adresse IP pour le système auquel vous souhaitez accéder :
sftp [username]@[remote hostname or IP address]
Dans l'exemple ci-dessous, nous nous connectons à un système avec l'adresse IP 192.168.100.5 en utilisant le phoenixnap nom d'utilisateur :
sftp [email protected]

Pour mettre fin à une connexion en cours, utilisez :
exit
Comment transférer des fichiers à l'aide de SFTP
L'utilisation de SFTP vous permet de transférer des fichiers d'un serveur distant vers un système local et vice versa.
Transférer des fichiers distants vers un système local
Utilisez le get
commande dans l'interface SFTP pour transférer un fichier d'un serveur distant vers votre système local :
get [path to file]
Par exemple, pour transférer un fichier nommé example_document.txt depuis la Accueil du système distant répertoire sur le système local, utilisez :
get example_document.txt

Par défaut, SFTP transfère les fichiers vers l'Accueil du système local annuaire. Pour transférer des fichiers vers un autre répertoire, ajoutez le chemin d'accès au répertoire à la fin de get
commande :
get example_document.txt Downloads

Pour modifier le nom de fichier sur le système local, ajoutez le nouveau nom de fichier à la fin de get
commande.
get example_document.txt sample01.txt

Dans l'exemple ci-dessus, le get
la commande récupère le example_document.txt fichier et l'enregistre sous sample01.txt sur le système local.
SFTP permet également le transfert d'un répertoire entier depuis le système distant en utilisant le -r
flag, indiquant un transfert récursif de tous les fichiers du répertoire :
get -r Example_Directory

Ajoutez le -P
indicateur au get
commande pour transférer le fichier ou le répertoire en préservant les permissions et les temps d'accès :
get -Pr Example_Directory
Utilisez le ls
commande pour vérifier le transfert vers le système local :
ls -l

Transférer des fichiers locaux vers un serveur distant
Pour transférer des fichiers d'un système local vers un serveur distant, utilisez le put
commande. Le put
La commande utilise la même syntaxe et les mêmes options que la commande get
commande.
put [path to file]
Par exemple, pour transférer un example01.txt fichier sur le serveur distant, utilisez :
put example01.txt

Pour transférer le fichier vers un répertoire spécifique sur le serveur distant, ajoutez le chemin d'accès au répertoire à la fin du put
commande.
put example01.txt Example_Directory

Ajout d'un nouveau nom de fichier à la fin du put
La commande change le nom du fichier transféré sur le serveur distant.
put example01.txt text_sample.txt

Le transfert d'un répertoire entier nécessite le -r
drapeau.
put -r Test_Directory

Ajoutez le -P
flag au put
commande pour conserver les autorisations de fichiers :
put -Pr Test_Directory
Vérifiez le transfert de fichier en utilisant le ls
commande sur le système distant :

Maintenance des fichiers à l'aide de SFTP
SFTP prend en charge la maintenance de base des fichiers. Par exemple, utilisez SFTP pour modifier les autorisations de fichiers et de répertoires sur un système distant.
Le chown
La commande modifie le propriétaire du fichier de la même manière que la commande chmod :
chown [user ID] [path to file]
Contrairement au chmod
commande, chown
accepte uniquement les ID utilisateur et non les noms d'utilisateur. Pour trouver les UID du serveur distant à l'aide de l'interface SFTP, vous devez transférer et accéder à /etc/passwd fichier :
get /etc/passwd
!less passwd
L'UID de chaque utilisateur se trouve dans la troisième colonne, séparé par les deux-points :

Le chmod
La commande fonctionne de la même manière que dans le shell standard :
chmod [permission] [path to file]
Une autre option consiste à modifier la propriété du fichier de groupe avec le chgrp
commande :
chgrp [group ID] [path to file]
Comme pour les UID, les ID de groupe se trouvent dans la troisième colonne du /etc/group fichier sur le serveur distant :
get /etc/group
!less group

SFTP vous permet de définir un umask local, qui modifie l'autorisation de fichier par défaut pour les fichiers transférés vers le système local.
Par exemple :
lumask 022
La commande ci-dessus change le umask local en 022 . Chaque fichier transféré après avoir défini ce umask a maintenant le 644 autorisation par défaut. Vous pouvez toujours conserver l'autorisation d'origine en utilisant le -p
drapeau.
Une autre façon de modifier les autorisations de fichiers locaux consiste à utiliser SFTP pour répliquer le comportement des commandes shell. Pour cela, ajoutez un point d'exclamation (! ) avant le nom de la commande.
Par exemple, en utilisant le chmod
commande sur le système local :
!chmod [permission] [path to file]