SSH : télécharger ou envoyer un fichier avec SCP

Il y a maintenant quelque temps que je vous avais écrit un article qui expliquait comment envoyer un fichier d’un serveur vers un autre serveur. Dans cet article, je pars du principe que vous maîtrisez la création et l’ajout d’une clé SSH sur votre serveur VPS pour pouvoir ensuite passer à la suite. J’ai donc décidé de refaire cet article en plus du précédent mentionné juste avant pour que ce soit plus simple et plus lisible. Ce sera aussi plus rapide pour moi pour faire facilement mes copier / coller dans le terminal.

Je vais vous expliquer et vous donner les bonnes commandes à taper dans votre terminal pour télécharger un fichier à partir de votre serveur VPS et aussi comment envoyer un fichier. Tout ça à partir de votre ordinateur local, car on a souvent besoin de récupérer ou transférer des fichiers vers sa machine distante.

Récupérer un fichier du serveur distant vers sa machine locale

La commande dans la forme la plus simple pour télécharger un fichier à partir de votre serveur avec scp (Secure Copy) en utilisant le protocole SSH est la suivante :

scp zonetuto@192.168.1.10:/var/backups/backup.tar.gz /home/localuser/Documents/

Cela mérite quelques explications en plus :

  • zonetuto : Le nom d’utilisateur utilisé pour se connecter au serveur distant.
  • serveur : L’adresse IP ou le nom de domaine du serveur distant.
  • /var/backups/backup.tar.gz : Le chemin absolu du fichier sur le serveur distant que vous souhaitez télécharger.
  • /home/localuser/Documents/ : Le chemin du dossier sur votre machine locale où le fichier sera téléchargé.

Télécharger le fichier dans le dossier courant

Si vous voulez simplement récupérer le fichier et le ranger dans le dossier ou vous lancez la commande, il est possible de simplifier comme ceci :

scp zonetuto@192.168.1.10:/var/backups/backup.tar.gz ./

Télécharger le fichier avec scp en le renommant

Si vous souhaitez télécharger le fichier et le renommer lors de la copie, vous pouvez spécifier le nouveau nom avec la commande scp suivante :

scp zonetuto@192.168.1.10:/var/backups/backup.tar.gz ./le_nouveau_nom_fichier.tar.gz

Télécharger le fichier en spécifiant une clé SSH à utiliser

Si vous n’utilisez pas le fichier de configuration SSH en local et que vous avez plusieurs clés, il est possible de la préciser avec la syntaxe suivante :

scp -i ~/.ssh/ma_cle_ssh zonetuto@192.168.1.10:/var/backups/backup.tar.gz ./backup.tar.gz

Envoyer un fichier vers le serveur distant avec SSH et SCP

Récupérer les fichiers, c’est bien, mais vous voulez peut-être aussi copier des fichiers locaux vers votre serveur, ça peut être bien utile. La structure de la commande change un peu, mais vous ne devriez pas être perdu. Pour copier un fichier vers votre serveur distant, vous pouvez utiliser la commande suivante :

scp ./bdd.sql zonetuto@192.168.1.11:/var/www/monprojet

Si vous ne vous trouvez pas au bon endroit sur votre machine locale, vous pouvez bien évidemment préciser le chemin du fichier à envoyer vers votre serveur, dans ce cas, comme tout à l’heure il faut le préciser :

scp /home/localuser/Documents/bdd.sql zonetuto@192.168.1.11:/var/www/monprojet

Changer le nom du fichier envoyé vers le serveur distant

Si vous le souhaitez, vous pouvez bien évidemment préciser le nouveau nom de votre fichier qui sera copié sur votre serveur :

scp /home/localuser/Documents/bdd.sql zonetuto@192.168.1.11:/var/www/monprojet/nouveau_nom.sql

Encore une fois, vous pouvez aussi préciser la clé SSH à utiliser si vous le souhaitez avec le paramètre -i :

scp -i ~/.ssh/ma_cle_ssh ./bdd.sql zonetuto@192.168.1.11:/var/www/monprojet

Avec ce tutoriel sur SCP, vous avez maintenant les bases pour copier vos fichiers sur un serveur distant ou les récupérer sur votre machine locale de manière sécurisée en utilisant SSH. Si vous avez des questions ou des remarques pour que je complète ce tutorial, n’hésitez pas à me le dire dans les commentaires !

4 réflexions au sujet de “SSH : télécharger ou envoyer un fichier avec SCP”

  1. Il est également possible d’envoyer un fichier d’une machine distante A vers une machine distante B.

    scp test@machineA:/mon/fichier truc@machineB:/vers/ici/

    Il faut cependant que l’utilisateur test sur la machine A puisse se connecter de manière non interactive en tant que truc sur la machine B (avec des clé par exemple).

    Répondre
    • Non, c’est faux. Il faut juste pouvoir se connecter avec test sur machineA et truc sur machineB.
      Le fichier transite par la machine locale.

      Si on veut ne pas transiter par la machine locale, il faut faire:

      ssh test@machineA scp /mnt/fichier truc@machineB:/vers/ici/

      Là effectivement, il faut que test sur la machineA puisse se connecter à la machineB, mais pas forcément de manière non-interactive.

      Répondre
    • Je ne critique pas la commande. Elle marche. Ce que je dis c’est que c’est faux de dire que « [qu’il faut que] l’utilisateur test sur la machine A puisse se connecter de manière non interactive en tant que truc sur la machine B ». C’est la commande que j’ai donné qui fait ça.

      La commande que tu donnes nécessite juste de pouvoir se connecter aux deux machines et les données passes pas la machine locale.

      Répondre

Laisser un commentaire