SFTP (SSH File Transfer Protocol) est un protocole de fichier sécurisé utilisé pour accéder, gérer et transférer des fichiers via un transport SSH crypté.
Par rapport au protocole FTP traditionnel, SFTP offre toutes les fonctionnalités de FTP, mais il est plus sécurisé et plus facile à configurer.
Contrairement à SCP, qui ne prend en charge que les transferts de fichiers, le SFTP vous permet d'effectuer une série d'opérations sur des fichiers distants et de reprendre les transferts de fichiers.
Dans ce tutoriel, nous allons vous montrer comment utiliser le Linux sftp
commande.
Avant de commencer #
Pour pouvoir transférer des fichiers via SFTP, vous devez disposer d'une autorisation d'écriture sur le système distant.
Lors du transfert de fichiers volumineux, il est recommandé d'exécuter le sftp
commande dans un screen ou tmuxsession.
Le répertoire à partir duquel vous exécutez le sftp
commande est le répertoire de travail local.
Établir une connexion SFTP #
SFTP fonctionne sur un modèle client-serveur. Il s'agit d'un sous-système de SSH et prend en charge tous les mécanismes d'authentification SSH.
Pour ouvrir une connexion SFTP vers un système distant, utilisez le sftp
commande suivie du nom d'utilisateur du serveur distant et de l'adresse IP ou du nom de domaine :
sftp remote_username@server_ip_or_hostname
Si vous vous connectez à l'hôte à l'aide de l'authentification par mot de passe, vous serez invité à saisir le mot de passe utilisateur.
Une fois connecté, le sftp
vous sera présenté invite, et vous pouvez commencer à interagir avec le serveur distant :
Connected to remote_username@server_ip_or_hostname.
sftp>
Si le serveur SSH distant n'écoute pas sur le port 22 par défaut, utilisez le -P
option pour spécifier le port SFTP :
sftp -P custom_port remote_username@server_ip_or_hostname
Commandes SFTP #
La plupart des commandes SFTP sont similaires ou identiques aux commandes du shell Linux.
Pour obtenir une liste de toutes les commandes SFTP disponibles, tapez help
, ou ?
.
help
Cela affichera une longue liste de toutes les commandes disponibles, y compris une courte description de chaque commande :
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
...
...
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
Navigation avec SFTP #
Lorsque vous êtes connecté au serveur distant, votre répertoire de travail actuel est le répertoire personnel de l'utilisateur distant. Vous pouvez le vérifier en tapant :
pwd
Remote working directory: /home/remote_username
Pour lister les fichiers et répertoires, utilisez le ls
commande :
ls
Pour naviguer vers un autre répertoire, utilisez le cd
commande. Par exemple, pour passer au /tmp
répertoire que vous saisiriez :
cd /tmp
Les commandes ci-dessus sont utilisées pour naviguer et travailler sur l'emplacement distant.
Le shell SFTP fournit également des commandes pour la navigation locale, les informations et la gestion des fichiers. Les commandes locales sont préfixées de la lettre l
.
Par exemple, pour imprimer le répertoire de travail local, vous taperez :
cd lpwd
Local working directory: /home/local_username
Transférer des fichiers avec SFTP #
SFTP vous permet de transférer des fichiers entre deux machines en toute sécurité.
Si vous travaillez sur un ordinateur de bureau, vous pouvez utiliser un client SFTP à interface graphique tel que WinSCP ou FileZilla pour vous connecter au serveur distant et télécharger ou charger des fichiers.
Le sftp
La commande est utile lorsque vous travaillez sur un serveur sans interface graphique et que vous souhaitez transférer des fichiers ou effectuer d'autres opérations sur les fichiers distants.
Téléchargement de fichiers avec la commande SFTP #
Pour télécharger un seul fichier depuis le serveur distant, utilisez le get
commande :
get filename.zip
Le résultat devrait ressembler à ceci :
Fetching /home/remote_username/filename.zip to filename.zip
/home/remote_username/filename.zip 100% 24MB 1.8MB/s 00:13
Lors du téléchargement de fichiers avec sftp
, les fichiers sont téléchargés dans le répertoire à partir duquel vous avez tapé le sftp
commande.
Si vous souhaitez enregistrer le fichier téléchargé sous un autre nom, indiquez le nouveau nom en deuxième argument :
get filename.zip local_filename.zip
Pour télécharger un répertoire depuis le système distant, utilisez le récursif -r
choix :
get -r remote_directory
Si un transfert de fichier échoue ou est interrompu, vous pouvez le reprendre en utilisant le reget
commande.
La syntaxe de reget
est la même que la syntaxe de get
:
reget filename.zip
Télécharger des fichiers avec la commande SFTP #
Pour télécharger un fichier de la machine locale vers le serveur SFTP distant, utilisez le put
commande :
put filename.zip
Le résultat devrait ressembler à ceci :
Uploading filename.zip to /home/remote_username/filename.zip
filename.zip 100% 12MB 1.7MB/s 00:06
Si le fichier que vous souhaitez télécharger ne se trouve pas dans votre répertoire de travail actuel, utilisez le chemin absolu vers le fichier.
Lorsque vous travaillez avec put
vous pouvez utiliser les mêmes options que celles disponibles avec le get
commande.
Pour télécharger un répertoire local, vous devez taper :
put -r locale_directory
Pour reprendre un téléchargement interrompu :
reput filename.zip
Manipulations de fichiers avec SFTP #
En règle générale, pour effectuer des tâches sur un serveur distant, vous vous y connectez via SSH et effectuez votre travail à l'aide du terminal shell. Cependant, dans certaines situations, l'utilisateur peut n'avoir qu'un accès SFTP au serveur distant.
SFTP vous permet d'effectuer certaines commandes de manipulation de fichiers de base. Voici quelques exemples d'utilisation du shell SFTP :
-
Obtenir des informations sur l'utilisation du disque du système distant :
df
Size Used Avail (root) %Capacity 20616252 1548776 18002580 19067476 7%
-
Créez un nouveau répertoire sur le serveur distant :
mkdir directory_name
-
Renommer un fichier sur le serveur distant :
rename file_name new_file_name
-
Supprimer un fichier sur le serveur distant :
rm file_name
-
Supprimer un répertoire sur le serveur distant :
rmdir directory_name
-
Modifier les autorisations d'un fichier sur le système distant :
chmod 644 file_name
-
Changer le propriétaire d'un fichier sur le système distant :
chown user_id file_name
Vous devez fournir l'ID utilisateur au
chown
etchgrp
commandes. -
Changez le propriétaire du groupe d'un fichier distant avec :
chgrp group_id file_name
Une fois que vous avez terminé votre travail, fermez la connexion en tapant bye
ou quit
.
Conclusion #
Dans ce tutoriel, nous vous avons montré comment utiliser le sftp
commande pour télécharger et charger des fichiers sur votre serveur SFTP distant.
Vous pouvez également configurer une authentification par clé SSH et vous connecter à vos serveurs Linux sans saisir de mot de passe. Si vous vous connectez régulièrement aux mêmes systèmes, vous pouvez simplifier votre workflow en définissant toutes vos connexions dans le fichier de configuration SSH.
N'hésitez pas à laisser un commentaire si vous avez des questions ou des commentaires.