• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • SFTP ou Secure File Transfer Protocol est un utilitaire de transfert de fichiers à distance sécurisé basé sur le protocole de transfert de fichiers (FTP).

    Le trafic FTP n'est pas chiffré et n'est pas sécurisé, c'est pourquoi il a été principalement remplacé par SFTP.

    SFTP fonctionne sur le protocole SSH par défaut sur le port TCP 22 et offre le même ensemble de capacités de sécurité et de cryptage que SSH. Le démon SSH par défaut exécuté dans le cadre du serveur OpenSSH sur les systèmes Linux prend en charge les fonctionnalités de base du protocole SFTP par défaut, bien qu'il existe un logiciel dédié distinct vsftpd qui peut être configuré pour obtenir des fonctionnalités et des personnalisations supplémentaires.

    Dans cet article, nous couvrirons l'utilisation de SFTP à partir de la ligne de commande. J'utiliserai un système Ubuntu bien que les commandes répertoriées ici fonctionnent sur tout Système Linux avec sftp client.

    Avant d'entrer dans les commandes, vous devez savoir que SCP devient obsolète et comme alternative, il est bon de se familiariser avec la commande SFTP. Vous pouvez faire à peu près tout avec SFTP que vous faites avec SCP.

    Copying files

    SFTP peut être utilisé en remplacement de SCP (Copie sécurisée) dans certains cas d'utilisation pris en charge. Un tel cas utilise SCP pour pousser ou extraire des fichiers d'un serveur distant en une seule fois.

    La syntaxe pour ajout l'utilisation de la commande SCP va comme ceci:

    $ scp {local-path} {user}@{remote-host}:{remote-path}

    Et pour téléchargement comme ça:

    $ scp {user}@{remote-host}:{remote-file-path} {local-path}

    De même, nous pouvons utiliser ce qui suit sftp syntaxe de commande pour télécharger des fichiers sur un serveur distant:

    $ sftp {user}@{host}:{remote-path} <<< $'put {local-path}'

    Voici une démonstration montrant téléchargement de fichiers à l'aide de sftp en une seule ligne:

    $ sftp [email protected]:/home/ftpuser/remote_test_dir <<< $'put /home/abhisheknair/new_file'
    [email protected]'s password:
    Connected to 192.168.1.231.
    Changing to: /home/ftpuser/remote_test_dir
    sftp> put /home/abhisheknair/new_file
    Uploading /home/abhisheknair/new_file to /home/ftpuser/remote_test_dir/new_file
    /home/abhisheknair/new_file                                                           100%    9     7.2KB/s   00:00
    $

    À Télécharger un fichier d'un serveur distant, utilisez la syntaxe de commande ci-dessous:

    $ sftp {user}@{remote-host}:{remote-file-name} {local-file-name}

    Voici une démonstration du téléchargement d'un fichier en une seule ligne en utilisant sftp:

    $ sftp [email protected]:/home/ftpuser/new_file1 /home/abhisheknair/new_local_dir
    [email protected]'s password:
    Connected to 192.168.1.231.
    Fetching /home/ftpuser/new_file1 to /home/abhisheknair/new_local_dir/new_file1
    /home/ftpuser/new_file1                                                               100%   12     3.6KB/s   00:00
    $

    Vous aimerez aussi échanger la clé SSH pour une authentification sans mot de passe.

    Connecting to an SFTP server

    Pour initier une connexion SFTP, utilisez sftp commande avec un nom d'utilisateur et le nom ou l'adresse IP de l'hôte distant. Le port TCP par défaut 22 doit être ouvert pour que cela fonctionne ou bien spécifier explicitement le port en utilisant -oPort drapeau.

    Je me connecte à un serveur SFTP avec IP 192.168.1.231. La première fois que vous vous connectez à un serveur SFTP, vous serez invité à confirmer l'empreinte du serveur comme SSH. Une fois confirmé en tapant 'OuiLa connexion se poursuit et demande le mot de passe d'un utilisateur.

    Lors d'une connexion réussie, vous serez affiché sftp> rapide.

    $ sftp [email protected]
    The authenticity of host '192.168.1.231 (192.168.1.231)' can't be established.
    ECDSA key fingerprint is SHA256:k90E28Pfnjoiq1svFw18dA2mazweoCmR5Hqi8SH0mj0.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '192.168.1.231' (ECDSA) to the list of known hosts.
    [email protected]'s password:
    Connected to 192.168.1.231.
    sftp>

    Check Version

    Vous pouvez vérifier la version SFTP en utilisant version commande à sftp rapide.

    sftp> version
    SFTP protocol version 3
    sftp>

    Getting Help

    Pour obtenir de l'aide sur les commandes et la syntaxe disponibles pour SFTP, utilisez '?' ou 'Besoin d'aide ?'.

    sftp> ?
    Available commands:
    bye Quit sftp
    cd path Change remote directory to 'path'
    chgrp [-h] grp path Change group of file 'path' to 'grp'
    chmod [-h] mode path Change permissions of file 'path' to 'mode'
    chown [-h] own path Change owner of file 'path' to 'own'
    df [-hi] [path] Display statistics for current directory or
    filesystem containing 'path'
    exit Quit sftp
    get [-afpR] remote [local] Download file
    help Display this help text
    lcd path Change local directory to 'path'
    lls [ls-options [path]] Display local directory listing
    lmkdir path Create local directory
    ln [-s] oldpath newpath Link remote file (-s for symlink)
    lpwd Print local working directory
    ls [-1afhlnrSt] [path] Display remote directory listing
    lumask umask Set local umask to 'umask'
    mkdir path Create remote directory
    progress Toggle display of progress meter
    put [-afpR] local [remote] Upload file
    pwd Display remote working directory
    quit Quit sftp
    reget [-fpR] remote [local] Resume download file
    rename oldpath newpath Rename remote file
    reput [-fpR] local [remote] Resume upload file
    rm path Delete remote file
    rmdir path Remove remote directory
    symlink oldpath newpath Symlink remote file
    version Show SFTP version
    !command Execute 'command' in local shell
    ! Escape to local shell
    ? Synonym for help
    sftp>

    Show Working Directory

    Lorsqu'il est connecté à un serveur distant, vous pouvez afficher le répertoire de travail actuel du système distant en utilisant pwd commander.

    sftp> pwd
    Remote working directory: /home/ftpuser
    sftp>

    Pour afficher l'utilisation actuelle du répertoire de travail du système local lpwd commander.

    sftp> lpwd
    Local working directory: /home/abhisheknair
    sftp>

    List Files

    Vous pouvez lister les fichiers dans le répertoire de travail distant en utilisant ls commander.

    sftp> ls
    remote_file1     remote_file2     remote_file3     remote_test_dir
    sftp>

    Pour répertorier les fichiers dans le répertoire de travail local, utilisez lls commander.

    sftp> lls
    bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
    sftp>

    Switching Directories

    Le changement de répertoire de travail distant peut être effectué en utilisant cd commander. Reportez-vous à l'exemple ci-dessous:

    sftp> pwd
    Remote working directory: /home/ftpuser
    sftp> ls
    remote_file1     remote_file2     remote_file3     remote_test_dir
    sftp> cd remote_test_dir
    sftp> pwd
    Remote working directory: /home/ftpuser/remote_test_dir
    sftp>

    Pour changer de répertoire de travail local, utilisez lcd commander. Voici un exemple simple pour montrer l'utilisation de lcd.

    sftp> lpwd
    Local working directory: /home/abhisheknair
    sftp> lls
    bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
    sftp> lcd testdir
    sftp> lpwd
    Local working directory: /home/abhisheknair/testdir
    sftp>

    Upload Files

    Pour télécharger un seul fichier, utilisez put commander. Découvrez comment je télécharge en local file1 vers le répertoire de travail distant en utilisant mettre commander. Je peux le vérifier en utilisant ls commande qui imprime le contenu du répertoire de travail distant.

    sftp> pwd
    Remote working directory: /home/ftpuser
    sftp> lpwd
    Local working directory: /home/abhisheknair
    sftp> ls
    remote_file1     remote_file2     remote_file3     remote_test_dir
    sftp> lls
    bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
    sftp> put file1
    Uploading file1 to /home/ftpuser/file1
    file1                                                                                                                                                                          100%    6     6.0KB/s   00:00
    sftp> ls
    file1            remote_file1     remote_file2     remote_file3     remote_test_dir
    sftp>

    Pour télécharger plusieurs fichiers en une seule fois, nous pouvons utiliser mput comme indiqué ci-dessous. j'utilise mput avec un modèle d'expression régulière File [23] qui télécharge essentiellement file2 et file3 et saute file1 car il a déjà été téléchargé à l'étape précédente. Vous pouvez utiliser n'importe quel caractère générique ou expression régulière avec mput.

    sftp> pwd
    Remote working directory: /home/ftpuser
    sftp> lpwd
    Local working directory: /home/abhisheknair
    sftp> ls
    file1            remote_file1     remote_file2     remote_file3     remote_test_dir
    sftp> lls
    bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
    sftp> mput file[23]
    Uploading file2 to /home/ftpuser/file2
    file2                                                                                                                                                                          100%    6     6.5KB/s   00:00
    Uploading file3 to /home/ftpuser/file3
    file3                                                                                                                                                                          100%    6     5.3KB/s   00:00
    sftp> ls
    file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
    sftp>

    Download Files

    Un seul fichier utilisant SFTP peut être téléchargé en utilisant get commander. Voici un exemple où j'ai téléchargé fichier_distant4 en utilisant sftp:

    sftp> pwd
    Remote working directory: /home/ftpuser/remote_test_dir
    sftp> lpwd
    Local working directory: /home/abhisheknair/testdir
    sftp> ls
    remote_file4
    sftp> lls
    file4
    sftp> get remote_file4
    Fetching /home/ftpuser/remote_test_dir/remote_file4 to remote_file4
    /home/ftpuser/remote_test_dir/remote_file4                                                                                                                                     100%   13     5.2KB/s   00:00
    sftp> lls
    file4  remote_file4
    sftp>

    Pour télécharger plusieurs fichiers, utilisez <strong>mget</strong> commander. Je télécharge ici tous les fichiers qui correspondent au modèle remote_file * dans le répertoire de travail distant à mon répertoire de travail local. J'utilise enfin <strong>lls</strong> commande pour voir les fichiers téléchargés.

    sftp> pwd
    Remote working directory: /home/ftpuser
    sftp> lpwd
    Local working directory: /home/abhisheknair/testdir
    sftp> ls
    remote_file1     remote_file2     remote_file3     remote_test_dir
    sftp> lls
    file4  remote_file4
    sftp> mget remote_file*
    Fetching /home/ftpuser/remote_file1 to remote_file1
    /home/ftpuser/remote_file1                                                                                                                                                     100%   12     5.9KB/s   00:00
    Fetching /home/ftpuser/remote_file2 to remote_file2
    /home/ftpuser/remote_file2                                                                                                                                                     100%   13     5.8KB/s   00:00
    Fetching /home/ftpuser/remote_file3 to remote_file3
    /home/ftpuser/remote_file3                                                                                                                                                     100%   13     7.3KB/s   00:00
    sftp> lls
    file4  remote_file1  remote_file2  remote_file3  remote_file4
    sftp>

    Create Directory

    Un nouveau répertoire peut être créé sur un serveur distant en utilisant mkdir commander.

    sftp> pwd
    Remote working directory: /home/ftpuser
    sftp> ls
    file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
    sftp> mkdir new_dir
    sftp> ls
    file1            file2            file3            new_dir          remote_file1     remote_file2     remote_file3     remote_test_dir
    sftp>

    De même, si vous souhaitez créer un nouveau répertoire sur le répertoire de travail actuel du système local à partir de l'invite sftp, utilisez lmkdir commander.

    sftp> lpwd
    Local working directory: /home/abhisheknair
    sftp> lls
    bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
    sftp> lmkdir new_local_dir
    sftp> lls
    bin  file1  file2  file3  lib  new_local_dir  oci-scripts  sys_info.sh  test.tgz  testdir
    sftp>

    Remove Directory

    Un répertoire distant vide peut être supprimé en utilisant rmdir commander. Notez que s'il n'est pas vide, vous obtiendrez une erreur.

    sftp> pwd
    Remote working directory: /home/ftpuser
    sftp> ls
    file1            file2            file3            new_dir          remote_file1     remote_file2     remote_file3     remote_test_dir
    sftp> rmdir new_dir
    sftp> ls
    file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
    sftp>

    Remove File

    Un fichier distant peut être supprimé en utilisant rm commander.

    sftp> pwd
    Remote working directory: /home/ftpuser
    sftp> ls
    file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
    sftp> rm remote_file3
    Removing /home/ftpuser/remote_file3
    sftp> ls
    file1            file2            file3            remote_file1     remote_file2     remote_test_dir
    sftp>

    Rename File

    Un fichier distant peut également être facilement renommé en utilisant rename commander.

    sftp> pwd
    Remote working directory: /home/ftpuser
    sftp> ls
    file1            file2            file3            remote_file1     remote_file2     remote_test_dir
    sftp> rename remote_file1 new_file1
    sftp> ls
    file1            file2            file3            new_file1        remote_file2     remote_test_dir
    sftp>

    Filesystem Usage

    Pour afficher les statistiques du répertoire courant ou du système de fichiers contenant 'path', utilisez df commander. On peut utiliser -h indicateur pour afficher les statistiques dans un format lisible par l'homme. Notez que les statistiques affichées concernent le système de fichiers respectif du serveur SFTP distant et non le système de fichiers de la machine locale.

    sftp> df
            Size         Used        Avail       (root)    %Capacity
        17811456      1845472     15965984     15965984          10%
    sftp> df -h
        Size     Used    Avail   (root)    %Capacity
      17.0GB    1.8GB   15.2GB   15.2GB          10%
    sftp>

    Quit SFTP Session

    Pour quitter la session SFTP, utilisez soit bye, exit, or quit commander. Vous serez renvoyé à l'invite de votre système d'exploitation après avoir quitté SFTP.

    sftp> exit
    $

    Conclusion

    SFTP est l'une des meilleures options disponibles, sécurisée et facile à utiliser. Il offre des fonctionnalités CLI et GUI et est pris en charge sur différentes plates-formes. Référer sftp page de manuel pour en savoir plus.

    $ man sftp

    Si vous souhaitez en savoir plus, consultez ceci Cours de maîtrise Udemy Linux.