SCP d'un serveur externe à un autre

12

J'essaie d'utiliser SCP sur mon serveur local pour copier un fichier d'un serveur distant vers un autre serveur distant (les deux serveurs distants utilisent un port personnalisé (xxxx)

J'essaie:

scp -r -P xxxx root@xxx.xxx.xxx.111:/home/myimages/images.tar.gz root@xxx.xxx.xxx.222:/home/myimages/images.tar.gz

Mais j'obtiens l'erreur suivante:

ssh: connect to host xxx.xxx.xxx.222 port 22: Connection timed out

Aucune suggestion?

Lézard
la source
Je suppose que vous pouvez passer ssh à xxx.xxx.xxx.222 normalement?
Ouais, je peux ssh sur tous les serveurs de tous les serveurs
Lizard
Cross affiché ici: serverfault.com/questions/81650/…
pause jusqu'à nouvel ordre.

Réponses:

17

avez-vous vérifié que l'authentification directe fonctionne du premier hôte distant au second?

scp user@host:/file user@otherhost:/otherfile est un raccourci pour

ssh user@host scp /file user@otherhost:/otherfile

ce qui me fait penser:

ssh -p XXX user@host scp -P XXX /file user@otherhost:/otherfile pourrait fonctionner.

jhwist
la source
1
Oui, j'ai envoyé à tous les serveurs de chaque serveur :(
Lizard
Bon point, juste parce que vous pouvez voir xxx.222 ne signifie pas que xxx.111 peut.
C'est un bon point, mais je l'ai déjà vérifié, d'autres suggestions?
Lézard
Le ssh puis le scp fait ce dont j'ai besoin.
Lézard
3

Il semble que scpne réalise pas que le port spécial doit également être utilisé sur le deuxième serveur. Vous pouvez essayer d'appeler explicitement sshpour démarrer le scptransfert à distance :

ssh -P xxxx user@host scp -P xxxx /file user@otherhost:/otherfile
qch
la source
3

Définissez les serveurs dans votre .ssh/config file, par exemple:

Host foobar
User youruser
Port 2222
Hostname the.real.hostname

Host foobar2
User youruser
Port 2222
Hostname the2.real.hostname

Vous pouvez alors simplement faire:

scp foobar:file foobar2:

et il utilisera les ports personnalisés définis.

sameproblemIhad
la source
3

J'ai des serveurs distants qui ne peuvent pas se voir, mais mon serveur local peut voir les deux. Le démon ssh des serveurs distants écoute dans différents ports ssh non standard. Voici comment je fais cela:

ssh -p 111 userA@remote1 'cat myfile' | ssh -p 222 userB@remote2 'cat - > myfile'

La deuxième commande ssh demande d'abord le mot de passe, puis remote1 demande le mot de passe pour l'utilisateurA. Vous pouvez l'avoir automatisé si vous avez configuré des clés autorisées ssh, ce qui n'est pas le cas dans mon environnement.

Joss
la source