从一个外部服务器 SCP 到另一个外部服务器

从一个外部服务器 SCP 到另一个外部服务器

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

我在尝试:

scp -r -P xxxx [email protected]:/home/myimages/images.tar.gz [email protected]:/home/myimages/images.tar.gz

但我收到以下错误:

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

有什么建议么?

答案1

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

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可能会有用。

答案2

似乎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:

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

答案4

我有远程服务器,它们无法互相看到对方,但我的本地服务器可以看到两者。远程服务器中的 ssh 守护程序正在监听不同的非标准 ssh 端口。以下是我完成此操作的方法:

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

第二个 ssh 命令首先要求输入密码,然后 remote1 要求输入 userA 的密码。如果您设置了 ssh 授权密钥,则可能会自动执行此操作,但在我的环境中并非如此。

相关内容