SCP : Transfert de fichier via SSH

SCP est un protocole de transfert de fichiers de poste à poste basé sur SSH permettant de sécuriser les échanges.

En effet, il empêche que vos informations puissent être interceptées par d’autres personnes , la sécurité et l’authentification étant gérées par SSH.

J’utilise personnellement ce protocole pour les backup des fichiers sur mon serveur. Mais il m’arrive aussi de l’utiliser pour transférer des fichiers vers mon serveur quand je n’ai pas envie d’ouvrir un logiciel tel que Filezilla. Je vais donc vous apprendre (de manière succincte) à vous servir de SCP, pour plus d’informations , taper « man scp » dans votre terminal :) . Notez que dans cet article les dossier sont des dossiers sur système Unix (En effet, /home/jeremy/ est mon répertoire personnel sur mon ordinateur tournant sous Debian une distribution GNU/Linux).

Backup de fichier

Serveur1 –> Serveur2 (Dans le cas d’envoi de dossier)

scp -r -p mylogin1@myserveur1:dossier1/ mylogin2@myserveur2:dossier2/

Serveur –> Ordinateur (Dans le cas d’envoi de dossier)

scp -r -p mylogin@myserveur:dossier/ /home/jeremy/dossier/

Serveur1 –> Serveur2 (Dans le cas d’envoi d’un seul fichier)

scp -p mylogin1@myserveur1:dossier1/mon_fichier1.txt mylogin2@myserveur2:dossier2/mon_fichier2.txt

Serveur –> Ordinateur (Dans le cas d’envoi d’un seul fichier)

scp -p mylogin@myserveur:dossier/mon_fichier.txt /home/jeremy/dossier/mon_fichier.txt

Envoi de fichier

Si vous désirez envoyer un dossier de votre ordinateur vers votre serveur :

scp -r -p /home/jeremy/dossier/ mylogin@myserveur:dossier/

Si vous désirez envoyer un fichier de votre ordinateur vers votre serveur :

scp -p /home/jeremy/dossier/ mylogin@myserveur:dossier/

Explications

Dans mes exemples j’ai introduit deux options en plus de la commande scp, que je vais vous expliquer directement.

L’option -r signifie « récursif », cela signifie que si vous envoyez un dossier (qui contient donc plusieurs fichiers et/ou sous-dossiers), scp parcourra tout ce dossier mais aussi les liens symboliques. Vous remarquerez que dans les commandes où je me contente de n’envoyer qu’un seul fichier, l’option -r disparaît car elle est bien entendu inutile.

L’option -p signifie que scp gardera les dates de modifications et de créations des fichiers et répertoires ainsi que leur droit en lecture et écriture.

Pour plus d’informations tournez vous vers les pages de manuel sur vos distributions en tapant tout simplement « man ssh » ou « man scp » dans un terminal. Ou alors rendez vous sur les pages wikipedia des deux protocoles SSH et SCP ;)

Merci à BurningHat pour la relecture de l’article ;)

38 réflexions au sujet de « SCP : Transfert de fichier via SSH »

  1. Jeremy Auteur de l’article

    Yop! J’èspère aussi mais bon tu as déjà bien corrigé tout ça :lol:

  2. rif

    Bonjour,
    je souhaite copier depuis un serveur un fichier via putty sur mon pc (sur lequel je n’ai que windows).
    J’ai essayé avec winscp mais j’ai un problème car je ne peux pas me connecter en root ( j’en ai besoin pour copier le fichier) et avec la méthode que tu présentes çà ne marche pas non plus, j’obtiens çà:
    WARNING: Ignoring unknown argument ‘-x’
    WARNING: Ignoring unknown argument ‘-oClearAllForwardings yes’
    WARNING: Ignoring unknown argument ‘-n’
    /usr/bin/dbclient: exited: Error connecting: Connection refused

    Merci de votre aide.

  3. rif

    Bah en fait sftp n’est pas installé dessus donc pas possible, mais scp oui.
    Et en fait il y a des fichiers qui sont sur une box (il y a un truc linux dessus)et je souhaite récupérer ces fichiers à distance.
    quand j’utilise scp sur putty je pense que le problème c’est que sous windows la nomination des fichiers n’est pas la même (C:..) est ce que çà s’adapte aux lignes de commande que vous proposez.
    Je sais pas si je suis clair, mais je ne suis pas un geek..

    Merci pour votre aide

  4. Jeremy Auteur de l’article

    Tu as les code d’accès root ou pas? Car si tu n’a pas les codes d’accès mais que tu en as besoin pour copier le fichier, cela sera impossible qu’importe le protocole utilisé.

  5. Jeremy Auteur de l’article

    Je vais faire un test avec putty et winscp sur mon serveur pour voir ;) Et je te dirais quoi. Car en effet la ligne de commande change surement.

  6. Jeremy Auteur de l’article

    Voila, j’ai un winscp sur un windows installé devant les yeux!
    Je l’ai installé en mode explorateur windows, il me suffit de faire clic droit sur un fichier puis « Copier » et il me propose de copier le fichier sur mon disque dur sous windows dans le répertoire de mon choix.
    Normalement ça devrais faire la même chose chez toi mais biensûr il faut te connecter en root. Cela m’évite de taper les commandes que j’ai donné dans mon article mais tout en utilisant le protocole scp ;) Dis moi si cela fonctionne chez toi ;)

  7. rif

    C’est là que réside mon problème. Avec winscp je n’arrive pas à me connecter en root, je me connecte d’abord avec login classique et le mot de passe associé mais après il n’y a rien pour se connecter en root. Et si j’essaie de me connecter directement en root (sans passer par le login « classique ») bah çà marche pas

  8. Jeremy Auteur de l’article

    Et si tu te connecte avec putty sur ton serveur puis que tu passe en root (avec su ou sudo ?) et que tu transfère le fichier dans un répertoire que ton utilisateur normal à le droit d’utiliser tu pourras te connecter ensuite avec winscp et transférer le fichier sur ton pc… C’est p-e un peu long ce que je te propose mais ça devrait fonctionner du moins je pense ;)

  9. rif

    J’y avais déjà pensé mais en fait l’utilisateur normal n’a aucun droit sur les fichiers c’est juste pour se connecter, et je ne peux pas changer les droits (problème de sécurité).

  10. Jeremy Auteur de l’article

    Oui je comprends mais si tu te connecte en user normal avec putty, tu seras en ligne de commande, là tu tape « su »(ou « sudo ») il te demandera ton mot de passe root, rentre le, et tu pourras faire ce que tu veux en temps que root.
    Je ne sais pas si tu as déjà essayé cela?

  11. rif

    Détails de plus, ce qui est bizarre c’est quand je me connecte avec winscp je vois bien tous les fichiers (pas normal car avec putty et le login normal je ne vois rien).
    Mais quand je veux copier çà me met çà :
    Impossible de démarrer le transfert SCP. Vérifier bien que SCP est bien installé sur le serveur et que son chemin est bien spécifié dans le PATH. Vous pouvez également utiliser SFTP à la place de SCP.
    Commande échouée avec pour code de retour 255.

    J’ai essayé de rajouter la commande scp à path avec export PATH=PATH:/chemin de la fonction scp, mais rien

  12. Jeremy Auteur de l’article

    Quand tu te connecte avec putty tu es en ligne de commande donc il est normal que tu ne vois rien. Il te suffit de taper « ls » et tu verras les fichiers ;)
    A la limite, connecte toi avec putty puis tape « su » puis ton passe root, transfere ton fichier dans le répertoire de ton user (sais tu la commande a taper?) et connecte toi en ftp avec Filezilla ou autre et tu pourras copier le fichier sur ton pc ;)

  13. rif

    oui je sais c’est quoi root :wink: , mais je ne peux pas changer les droits (pas par incapacité) mais l’utilisateur normal n’a accès à rien, même pas voir les fichiers pour cause de sécurité

  14. Jeremy Auteur de l’article

    En clair tu ne peux pas taper « su » avec ton user? Comment tu fais pour te connecter en root sur ce serveur? Et avec putty te connecter directement en root est impossible aussi? Si tu ne sais pas te connecter en root avec winscp et que ton user n’a accès à rien , je ne vois aucune solution pour que tu puisse copier un fichier où tu as obligatoirement besoin d’un accès root pour le copier… Désolé :oops:

  15. rif

    sur putty il n’y a aucun problème je me connecte en root, mais pas directement il faut d’abord passer par le login de base.
    avec winscp bah je ne peux pas me connecter en root car il y a pas ou en tout cas j’ai pas trouvé (car faut d’abord s’identifier avec le login normal).

  16. Jeremy Auteur de l’article

    Justement c’est ce que je « veux » que tu fasse, te connecter en root pour transferer ton fichier vers un répertoire ou ton user normal pourra le récuperer avec winscp ou un logiciel ftp tel que Filezilla.
    Quel est le répertoire(sur le serveur) du fichier que tu veux copier sur ton pc et quel est le répertoire auquel ton user peut accéder grâce à winscp ou un logiciel ftp?

  17. rif

    justement rien, le user ne peut accèder à rien, genre quand je me connecte (compte user sur putty) et que je tape ls (ou autre commande) je n’ai rien mm pas un fichier ou répertoire.

    Le user ne sert qu’à se connecter et ne peux et ne doit en aucun avoir accès à un fichier par mesure de sécurité

  18. rif

    Il n’y pas un moyen de copier avec putty avec l’option scp mais en changeant les options merci de ton aide en tout cas.
    C’est gentil de ta part.

  19. Jeremy Auteur de l’article

    Bon bah là alors je ne vois pas comment faire… Ton serveur héberge un site internet ou non? Car à ce moment là j’aurais limite une idée, qui consisterais à faire un paquet .tar ou .zip de ton fichier dans un répertoire accesible sur ce site internet et le télécharger. Car franchement si ton user n’a accès a rien et que tu ne sais pas te connecter en root depuis winscp bah winscp ne te sert à rien ;)

    Sinon concernant le fait de copier de putty vers ton pc, je n’en ai aucune idée…

  20. Jeremy Auteur de l’article

    J’ai épuisé toutes les solutions qui me passent par la tête là…Désolé :oops:
    Mais je vais tenter de demander à un ami si il ne voit pas de solution ;)

  21. Jeremy Auteur de l’article

    Bon bah j’en ai parlé avec lui et franchement à part tout ce que je t’ai déjà dis , on ne vois aucune solution…
    Je suis vraiment désolé de ne pas pouvoir t’aider plus :oops:

    Je te conseille de contacter le support de l’hebergeur de ton serveur ou l’admin qui gère ton serveur ou quelqu’un qui pourrait intervenir dessus pour qu’il t’envoi le fichier ou du moins puisse t’aider plus que moi ;)

    Encore désolé :oops:

  22. loïc m.

    très rapidement sans lire tous les commentaires : as-tu essayé de te connecter à ton serveur via Filezilla en utilisant le port 22 ?
    Tu te connecte en sftp comme ça.
    C’est ce que j’ai utilisé au boulot plutôt que les utilitaires putty.

  23. Jeremy Auteur de l’article

    @Loic : C’est une bonne idée mais il semblerait que sftp ne sois pas installé sur le serveur et que de toute façon son user ne puisse rien faire sur le serveur(et qu’il ne sait pas se connecter directement en root non plus) donc cela ne sert a rien malheureusement… Je pense que le mieux est qu’il fasse refaire la configuration de son serveur car un user qui ne sait rien faire, ne sert à rien et pose justement des soucis comme ceux abordés dans les commentaires de cet article.

    Mais en tout cas un très grand merci pour ton aide ;) Et je suis sur que ça pourra servir à d’autres ;)

  24. rif

    Je vous remercie pour votre aide, merci d’avoir pris le temps de répondre et de réfélchir à mon problème.

  25. Jeremy Auteur de l’article

    @rif : De rien ;) C’est toujours un plaisir de pouvoir aider ;) Et désolé de ne pas avoir su t’aider plus ;)

  26. Ping : Anonyme

  27. Ping : 1 mois de blogging : Premier bilan | Jérémy Verda's blog!

  28. Jérémy Auteur de l’article

    @Mabylone : Si vraiment tu désire passer par des connections plus sécurisés avec Filezilla, il gère le SFTP ;) Maintenant Filezilla n’est pas interdit, d’ailleurs je l’utilise à l’instant mais perso pour de très gros transfert je préfère scp ;)

  29. Ping : SCP : Transfert de fichier via SSH | NovaHoster

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>