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

Ala*_*lan 19 unix ssh scp

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

localA $ scp userB@remoteB:/path/to/file userC@remoteC:/path
Run Code Online (Sandbox Code Playgroud)

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

根据Garron的说法上面应该可行,但我得到了许可否认.

Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive).
lost connection
Run Code Online (Sandbox Code Playgroud)

有什么建议?

小智 34

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

ssh -A -t user1@remote1 scp srcpath user2@remote2:destpath
Run Code Online (Sandbox Code Playgroud)

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

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

  • 需要注意的是,由于这将直接从remote1连接到remote2,因此仅从本地将SSH转换为remote2是不够的,因此您需要检查是否可以从remote1转换为remote2(例如名称)和配置在remote1上的〜/ .ssh / config中) (2认同)
  • 迄今为止我见过的最好的解决方案。您不必授权服务器相互“ssh”,您需要的只是使用您的密钥访问它们。与 `scp -3` 不同的是,数据直接在服务器之间复制,可能通过非常快的本地网络。 (2认同)
  • @LeonidBeschastny 你在做猜测,不受欢迎。您将必须拥有多个密钥文件(如果您选择),并且会降低安全性,您可能没有在同一网络上的服务器。问题不是我如何连接到一个遥控器并转移到另一个。这是我如何通过 scp 进行远程到远程传输。 (2认同)
  • @RubenCaro:感谢分享,但它对我不起作用。错误:`权限被拒绝(公钥、gssapi-keyex、gssapi-with-mic、密码)。失去连接` (2认同)
  • 这是一个错误的答案。仅当 user1@remote1 的 ssh pub 密钥安装在 user2@remote2 的authorized_keys 中时,该命令才会起作用。本地凭据将不会在 scp 中使用。 (2认同)

小智 31

超级用户已存在此问题:

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
Run Code Online (Sandbox Code Playgroud)

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

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

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


Ris*_*ran 6

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

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

将出现一个提示,要求输入这样的密码:

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

如果您通过在第一个密码后按 Enter 键按顺序提供两个密码,则它应该接受但不会接受。即使您按顺序再次输入两个密码,但在第一个密码后不按 Enter 键,它也不会再次接受。

您必须先输入 user2,然后按 Enter,然后输入 user1 的密码并按 Enter。这将起作用。

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