通过私钥登录的两个服务器之间 scp 的正确方法是什么?

通过私钥登录的两个服务器之间 scp 的正确方法是什么?

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

问题是我无法使用该密钥将文件从一台这样的服务器 scp 到另一台服务器 - 服务器一没有服务器二需要的私钥(只有公共部分),因此服务器二不允许服务器一访问。

发送文件的唯一方法是先将它们发送到我的电脑(太慢了),将私钥发送到其中一个服务器(在这种情况下可能不会爆炸,但我真的非常讨厌这种解决方案),或者为该服务器或其中一个服务器创建额外的帐户。

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

答案1

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

localcomputer$ ssh -o ForwardAgent=yes [email protected]

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

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

(简而言之,在一定程度上你必须相信[电子邮件保护]

答案2

附注:

如果要发送大量数据,最好使用 tar-over-ssh,而不是 scp。速度确实快得多。

如何通过 ssh 使用 tar

相关内容