在您通过私钥登录的两台服务器之间进行 scp 的正确方法是什么?

taw*_*taw 5 ssh

我有大量数据要从一台服务器发送到另一台服务器。我使用私钥通过 ssh 访问服务器。

问题是我不能使用该密钥将 scp 文件从一个这样的服务器发送到另一个服务器 - 服务器一没有服务器二期望的私钥(只有公共部分),所以二不允许从一访问。

发送文件的唯一方法是先将它们发送到我的计算机(太慢),将私钥发送到其中一台服务器(在这种情况下可能不会爆炸,但我真的很讨厌这样的解决方案),或者创建额外的仅用于该服务器或其中一台服务器的帐户。

ssh 没有办法让 ssh 会话转发授权吗?那真是太好了。

and*_*dol 6

假设您在两台服务器上的 ~/.ssh/authorized_keys 中都有相同的公钥,并且您在本地运行某种 ssh 代理,那么您可以使用代理转发。

localcomputer$ ssh -o ForwardAgent=yes youruser@server.one
Run Code Online (Sandbox Code Playgroud)

这样,当您从 server.one 对 server.two 运行您的 scp 会话时,身份验证将由您的本地计算机在后台透明处理。请注意以下警告,取自 ssh_config(5)

应谨慎启用代理转发。能够绕过远程主机上的文件权限(对于代理的 Unix 域套接字)的用户可以通过转发的连接访问本地代理。攻击者无法从代理获取密钥材料,但是他们可以对密钥执行操作,使他们能够使用加载到代理中的身份进行身份验证。

(简而言之,在某种程度上,您必须信任 root@server.one。)

  • 请注意,这可能不适用于 scp,因为它[明确禁用代理转发](http://onlamp.com/pub/a/onlamp/excerpt/ssh_11/index2.html#59307)。 (2认同)
  • 您可以使用“-o”标志启用“scp”代理转发,该标志允许设置 SSH 选项,如“ssh_config”中的选项。例如, `scp -o "ForwardAgent yes" user@host1:/path/to/file user@host2:/path/to/directory` (2认同)