使用本地身份验证在远程服务器之间进行复制

使用本地身份验证在远程服务器之间进行复制

当我需要在两个远程服务器之间复制一些文件时,我通常

scp -3 user@server1:path user@server2:path

不幸的是,由于这会通过我的机器路由流量,所以当文件“很大”并且服务器彼此“靠近”时,速度会非常慢......

您是否知道有什么方法可以实现常规的“直接传输”行为scp(即:否-3),同时将身份验证委托给我的机器(即:像-3)?

..也许还有其他scp选择?

答案1

我能想到的最接近的建议是使用ssh-agent

  1. 如果您还没有代理,请启动一个:ssh-agent bash
  2. 加载密钥:ssh-add
  3. ssh到一个主机并让它启动到另一台主机的复制:scp user@server1:path user@server2:path

不使用scp不带-3标志的命令,您可以明确地ssh选择一台主机并启动scp,然后由您决定是否要sshserver1server2使用我上面给出的命令,scp将为您选择一个。

从安全角度来看,使用存在危险ssh-agent,因为服务器将具有完全访问权限,可以访问代理中的密钥,甚至可以将其用于除此文件传输之外的其他目的。

如果您不想信任任何一台服务器访问另一台服务器,但想确保只有客户端主机可以访问密钥,并且服务器可以安全地相互通信,但只会传输您指定的文件而不执行任何其他操作,那么您将需要一些其他工具。我不认为这可以通过 来实现scp

答案2

为什么不能使用公钥身份验证,在 .ssh/config 中将 ForwardAgent 设置为 yes,然后只使用 scp user@server1:path user@server2:path ?我试过了,对我来说是有效的。

相关内容