scp (Secure Copy Protocol) permet de transférer des fichiers de manière sécurisée via SSH.
Il est utilisé pour :
- copier des fichiers vers un serveur
- récupérer des fichiers depuis un serveur
- transférer des dossiers complets
- automatiser des transferts sécurisés

Principe
scp source destination
Le transfert se fait via SSH (port 22 par défaut).
Syntaxe générale
scp [options] source utilisateur@ip:/chemin
scp [options] utilisateur@ip:/chemin destination
Connexion avec clé SSH (recommandé)
Génération de la clé
Sur le poste client :
ssh-keygen -t rsa -b 4096
Fichiers générés :
~/.ssh/id_rsa (clé privée)
~/.ssh/id_rsa.pub (clé publique)
Copie de la clé sur le serveur
ssh-copy-id user@192.168.1.10
Ou manuellement :
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Sur le serveur :
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Test de connexion
ssh user@192.168.1.10
Si la connexion fonctionne sans mot de passe, la clé est correctement configurée.
Utilisation de scp avec clé
scp -i ~/.ssh/id_rsa fichier.txt user@192.168.1.10:/home/user/
Désactivation du mot de passe (optionnel)
Sur le serveur :
nano /etc/ssh/sshd_config
Modifier :
PasswordAuthentication no
Puis :
systemctl restart ssh
Transfert de fichiers
Upload
scp fichier.txt user@192.168.1.10:/home/user/
Download
scp user@192.168.1.10:/home/user/fichier.txt .
Copie d’un dossier
scp -r dossier user@192.168.1.10:/home/user/
Options utiles
Port personnalisé
scp -P 2222 fichier.txt user@192.168.1.10:/home/user/
Compression
scp -C fichier.txt user@192.168.1.10:/home/user/
Mode verbeux
scp -v fichier.txt user@192.168.1.10:/home/user/
Limiter le débit
scp -l 1000 fichier.txt user@192.168.1.10:/home/user/
Exemple complet
scp -r -C -i ~/.ssh/id_rsa dossier user@192.168.1.10:/home/user/
Copier entre deux serveurs
scp user1@192.168.1.10:/fichier.txt user2@192.168.1.20:/home/user/
Permissions
Vérifier :
ls -l
Modifier :
chmod 644 fichier.txt
chown user:user fichier.txt
Script automatisé
#!/bin/bash
scp -i ~/.ssh/id_rsa /backup/data.tar.gz user@192.168.1.10:/backup/
Problèmes fréquents
| Problème | Cause | Solution |
|---|---|---|
| Permission denied (publickey) | clé absente | vérifier authorized_keys |
| Mauvais droits SSH | permissions incorrectes | chmod 600 / 700 |
| Connexion refusée | SSH arrêté | systemctl status ssh |
| Timeout | firewall | ouvrir port 22 |
Bonnes pratiques
- utiliser des clés SSH
- protéger la clé privée
- désactiver l’authentification par mot de passe
- utiliser des chemins absolus
- automatiser avec scripts
Fichiers importants
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
~/.ssh/authorized_keys
/etc/ssh/sshd_config
/var/log/auth.log
À retenir
scp + clé SSH = transfert sécurisé sans mot de passe
solution simple, rapide et adaptée aux scripts
