如何使用来自第三台本地计算机的scp在两台远程服务器之间传输文件?

问题描述 投票:19回答:5

我正在尝试将文件从一台远程服务器复制到本地计算机上的另一台远程服务器。这就是我想要做的

localA $ scp userB@remoteB:/path/to/file userC@remoteC:/path

问题是我需要在远程计算机上为userB和userC传递两个密码。

根据Garron,上述应该有效,但我得到了许可否认。

Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive).
lost connection

有什么建议?

unix ssh scp
5个回答
30
投票

超级用户已存在此问题:

https://superuser.com/questions/686394/scp-between-two-remote-hosts-from-my-third-pc

scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt

如上所述,-3选项指示scp通过发出命令的PC路由流量。

如果remote1和remote2在同一网络上,则上述情况属实。

如果不是: - 您必须使用端口转发


31
投票

如果你可以从本地(本地 - > remote1和本地 - > remote2)ssh到两个远程服务器,那么你可以尝试:

ssh -A -t user1@remote1 scp srcpath user2@remote2:destpath

这将使用您的本地凭据直接从remote1传输到remote2。

如果您不想要求输入密码,则应在遥控器上设置authorized_keys文件。


3
投票

这可以在linux终端中使用以下命令行:

scp -3 user1 @ ip:path / from / directory / user2 @ ip:path / to / directory

将出现一个提示,要求输入如下密码:

user1 @ ip的密码:user2 @ ip的密码:

如果您在第一个密码后按Enter键按顺序给出两个密码,它应该接受但不会。即使您按顺序再次提供两个密码,但在第一个密码后没有按Enter键,它也不会再次接受。

你必须先给user2,然后按回车键,然后输入user1的密码,然后按回车键。这会奏效。

我知道这听起来不对,但只有这样才行。这是scp中的一个错误。


1
投票

如果authorised_keys文件中没有条目,则只需要密码。登录到2台服务器(localA - > remoteB&remoteB - > remoteC)并建立安全连接后,您的原始命令应该可以正常工作。


1
投票

我发现-o "ForwardAgent yes”可以解决问题:

localA $ scp -o "ForwardAgent yes” userB@remoteB:/path/to/file userC@remoteC:/path

我比-3更喜欢这个,因为我不想让中间机器放慢速度。我也喜欢@RubenCaro的答案,但这似乎更直接。

© www.soinside.com 2019 - 2024. All rights reserved.