====== commande scp ====== SCP : **S**ecure **C**o**P**y SCP est le nom d'une commande fournis par le paquet "openssh-client". La commande permet de façon très simple d'échanger des fichiers et des dossiers entre **un client SSH** et **un serveur SSH**. L'utilisation de la commande SCP permet de rapidement prendre et envoyer des fichiers en ligne de commande entre machines Linux. Nous allons ici utiliser la même structure de commande que la commande "cp" sous Linux qui permet de copier un fichier. SCP prend en effet le modèle de "cp" pour son utilisation basique. Prenons le schéma suivant, il est souvent plus facile de visualiser les flux réseau ainsi : {{:start:rasberry:ssh:ssh-scp-linux-01.jpg|}} On dispose donc de deux machines sous Linux, avec chacune leur arborescence. Envoi d'un fichier via SSH en utilisant SCP Si je suis sur la Machine mickael et que je souhaite envoyer le fichier /home/mickael/data/Fichier2 dans le répertoire /var/www du serveur Linux, je vais utiliser la commande suivante : scp /home/mickael/data/Ficher2 root@192.168.10.131:/var/www/ Quelques explications, vous allez voir, ce n'est pas si complexe que cela Ici, on retrouve la structure de la commande "cp" dans laquelle on spécifie la source, puis la destination. Entre les deux, on peut voir "root@192.168.10.131 :". En effet, étant donné que l'on souhaite envoyer le fichier en question sur une autre machine, il faut bien spécifier son IP, de plus, si l'on passe par SSH, il faut s'authentifier. On va donc se logguer en root sur notre machine distante pour y déposer notre fichier. Le ":" permet de spécifier le chemin dans la machine distante. S'il n'est pas spécifié, les fichiers atteriront dans le dossier par défaut de l'utilisateur : la home. (/root pour l'utilisateur root, /home/user pour l'utilisateur "user", etc.). Note : Il faut bien sûr être certain que le chemin de destination existe sur la machine de destination. Dans le cas contraire, nous obtiendrons une erreur de la part de SSH. ==== scp : transfert de fichier à travers une connexion ssh ==== Avantages : * Transferts sécurisés via connexion SSH ; Inconvénients : * Nécessite un accès ssh sur la ou les machine(s) distante(s) ; L’utilisateur ssh utilisé doit avoir accès aux fichiers ou dossiers désirés ; Exemple de cas d’utilisations : * Le transfert de backups entre serveurs ; Transfert de gros fichiers ; Envoi de fichiers et répertoires De serveur à serveur depuis votre machine locale Copie récursive d’un dossier d’un serveur (serveur1) vers un autre serveur (serveur2) depuis votre machine locale. Cela nécessite d’avoir accès aux deux serveurs, depuis votre machine locale, vous lancez une commande qui copiera les fichiers d’un serveur à un autre. scp -r -p user@serveur1:chemin/vers/dossier/source user@serveur2:chemin/vers/dossier/destination Copier dans le presse-papier De serveur à serveur en étant connecté à un serveur La commande est sensiblement la même, vous êtes connecté sur la machine où sont disponibles les fichiers. scp -r -p chemin/vers/dossier/source user@serveur2:chemin/vers/dossier/destination Copier dans le presse-papier * L’option -r indique la récursivité * L’option -p préserve les dates de modification, d’accès, et les modes des anciens fichiers. ==== Aide sur scp : copie de fichiers ==== 1. Définition La commande scp permet de copier un fichier ou un répertoire (-r) du client vers le serveur ou du serveur vers le client. Le chemin du serveur peut être indiqué en absolu (/home/dupont/Repertoire par exemple) ou relatif à partir du répertoire de base Repertoire. Pour utiliser scp, vous devez connaître l’arborescence exacte des répertoires de la machine distante. Il est impératif que SSH soit installé sur les deux machines devant communiquer pour effectuer votre transfert. Attention: il sera nécessaire de donner votre mot de passe car au Centre de Calcul, il n’est pas possible de faire une authentification par échange de clés SSH (voir se connecter au Centre de Calcul avec SSH). 2. Usage scp [-pqrvBC1246] [-F ssh_config] [-S program] [-P port] [-c cipher][-i identity_file] [-l limit] [-o ssh_option] [[user@]host1:]file1[...] [[user@]host2:]file2 3. Syntaxe * Copie d’un fichier d’une machine serveur1 vers une autre machine serveur2: scp Login1@Serveur1:Chemin1/NomFichier1 Login2@Serveur2:Chemin2/NomFichier2 * Copie d’un fichier depuis le répertoire courant vers un répertoire du serveur: scp Fichier login@serveur:Chemin * Copie d’un répertoire, avec éventuellement ses sous-répertoires, vers un répertoire du serveur: scp -r Repertoire login@serveur:Chemin * Copie d’un fichier du serveur vers le répertoire courant: scp login@serveur:Chemin/Fichier . * Copie d’un répertoire du serveur vers le répertoire courant: scp -r login@serveur:Chemin/Repertoire . 4. Exemple : * copie le fichier Readme.txt de /afs/in2p3.fr/home/c/calvat sur ccali.in2p3.fr vers le répertoire local courant. scp calvat@ccali.in2p3.fr:/afs/in2p3.fr/home/c/calvat/Readme.txt . * copie le répertoire toto et les sous-répertoires attachés de /afs/in2p3.fr/home/c/calvat sur ccali.in2p3.fr vers le répertoire local courant. scp -r calvat@ccali.in2p3.fr:/afs/in2p3.fr/home/c/calvat/toto . ==== Liens Web ==== [[https://www.it-connect.fr/chapitres/transfert-de-fichier-via-ssh/|Transfert de fichier via SSH]] ==== Connection en ssh SFTP avec Filezilla === [[https://www.numelion.com/tutoriel-transfert-sftp-avec-filezilla.html|SFTP et Filezilla]]