introduction
Lorsque vous utilisez des commandes comme scp
ou rsync
avec l'adresse IP publique de votre serveur, vous transférez automatiquement les fichiers sur Internet (public). Si vous avez deux instances avec un réseau privé activé, vous pouvez également transférer ces fichiers sur le réseau privé et éviter des frais supplémentaires pour la bande passante utilisée.
Conditions préalables
- Deux instances (nous les appellerons
server_a
et server_b
) avec un réseau privé activé
- Les deux instances doivent avoir des adresses IP privées configurées dans le même sous-réseau (voir Configuration d'un réseau privé )
- La connectivité SSH devrait être possible entre les deux instances
- Un utilisateur qui n'est pas root (nous l'appellerons
your_user
)
Génération et utilisation de clés SSH
Le transfert de fichiers est possible en utilisant l'authentification par nom d'utilisateur et mot de passe, mais il est beaucoup plus sûr d'utiliser des clés SSH. La génération de la clé publique-privée est décrite dans Comment générer des clés SSH? . Si vous décidez de sauter cette section, vous devrez entrer le mot de passe de l'utilisateur distant dans chaque commande.
En supposant que la paire de clés publique-privée server_a
se trouve dans ~/.ssh/id_rsa
, vous pouvez exécuter la commande suivante pour transférer votre clé publique vers server_b
. Utilisez l'adresse IP privée de server_b
.
ssh-copy-id [email protected]
Lorsque vous y êtes invité, donnez le mot de passe pour your_user
.
ssh-copy-id [email protected] /usr/bin/ssh-copy-id: INFO: Source of
key(s) to be installed: "/home/your_user/.ssh/id_rsa.pub" The
authenticity of host '192.168.0.101 (192.168.0.101)' can't be
established. ECDSA key fingerprint is
SHA256:g9dfqycqU25b567/HDjPTqaQqKhep/fysNCQAG9yJG4. ECDSA key
fingerprint is MD5:41:67:be:68:51:9b:38:a8:95:82:71:47:f1:35:39:66.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),
to filter out any that are already installed /usr/bin/ssh-copy-id:
INFO: 1 key(s) remain to be installed -- if you are prompted now it is
to install the new keys [email protected]'s password:
Number of key(s) added: 1
Essayez maintenant de vous connecter à la machine.
ssh [email protected]
Vérifiez que seules les clés souhaitées ont été ajoutées.
Si vous vous connectez maintenant de server_a
à server_b
, il ne vous demandera plus de mot de passe. Dans le cas où la paire de clés publique-privée ne se trouve pas, ~/.ssh/id_rsa
vous pouvez spécifier son emplacement avec le -i
paramètre (vous aurez également besoin de ce paramètre avec la commande scp
et rsync
).
ssh-copy-id -i /path/to/your/public_key [email protected]
ssh -i /path/to/your/private_key [email protected]
Transfert de fichiers avec SCP
SCP signifie Secure Copy et transfère toutes les données via une connexion SSH. Pour copier un seul fichier, à ~/myfile
partir server_a
du /tmp
répertoire, server_b
nous pouvons exécuter la commande suivante.
scp ~./myfile [email protected]:/tmp
Pour copier un dossier complet avec tout son contenu (y compris les liens symboliques), vous pouvez ajouter l' -r
option
scp -r ~./mydir [email protected]:/tmp
Transfert de fichiers avec Rsync
Rsync est un outil polyvalent pour copier des fichiers, il est le plus souvent utilisé pour synchroniser le contenu de deux emplacements. Il utilise le même tunnel SSH sécurisé pour transférer les données. Un dossier complet peut être synchronisé avec un répertoire distant /tmp
avec la commande suivante
rsync -av ~/mydir [email protected]:/tmp
L' -v
option augmente la verbosité afin que vous puissiez suivre la progression du transfert. L' -a
option active le «mode d'archivage» qui copie vos fichiers de manière récursive tout en préservant les attributs tels que le propriétaire, le groupe et les autorisations.