从一台外部服务器到另一台外部服务器的SCP


12

我正在尝试使用本地服务器上的SCP将文件从一个远程服务器复制到另一台远程服务器(两个远程服务器都使用自定义端口(xxxx)

我在尝试:

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

但我收到以下错误:

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

有什么建议?


我假设您可以正常地ssh到xxx.xxx.xxx.222?

是的,我可以从所有服务器SSH到所有服务器
Lizard

Answers:


17

您是否检查了从第一台远程主机到第二台远程主机的直接身份验证是否有效?

scp user@host:/file user@otherhost:/otherfile 是的简写

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

这让我思考:

ssh -p XXX user@host scp -P XXX /file user@otherhost:/otherfile 可能有效。


1
是的,我从每台服务器sshd到两台服务器:(
蜥蜴

好一点,仅仅因为您可以看到xxx.222并不意味着xxx.111可以。

很好,但是我已经检查过了,还有其他建议吗?
蜥蜴

ssh然后,scp执行我需要的操作。
蜥蜴

3

似乎scp没有意识到特殊端口也应该在第二台服务器上使用。您可以尝试显式调用ssh以开始远程scp传输:

ssh -P xxxx user@host scp -P xxxx /file user@otherhost:/otherfile

3

在中定义服务器.ssh/config file,例如:

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

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

然后,您可以简单地执行以下操作:

scp foobar:file foobar2:

它将使用定义的自定义端口。


3

我有彼此看不到的远程服务器,但是我的本地服务器可以看到两者。远程服务器中的ssh守护程序正在不同的非标准ssh端口中侦听。这就是我完成此工作的方式:

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

第二个ssh命令首先询问密码,然后remote1询问userA的密码。如果您设置了ssh授权密钥,则可以自动执行此操作,而在我的环境中则不是这种情况。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.