我有大量的数据从一台服务器发送到另一台服务器。 我使用私钥通过ssh访问服务器。
问题是我不能使用该密钥从一个这样的服务器scp文件到另一个 – 服务器一个没有私人密钥哪个服务器两个期望(只有公共部分),所以两个不会允许从一个访问。
发送文件的唯一方法是先把它们送到我的电脑(太慢),把私钥发送到其中一台服务器(在这种情况下可能不会爆炸,但我真的很讨厌这样的解决scheme),或者创build额外的帐户仅用于该服务器或其中一台服务器。
有没有办法让ssh会话转发授权? 那真是太棒了。
假设两台服务器上的〜/ .ssh / authorized_keys中都有相同的公钥,并且您在本地运行某种ssh代理,则可以使用代理转发。
localcomputer$ ssh -o ForwardAgent=yes [email protected]
这样,当你从server.one运行你的scp会话对server.twoauthentication将透明地在本地计算机在后台处理。 只要注意下面的警告,从ssh_config(5)
代理转发应谨慎使用。 能够绕过远程主机(对于代理的Unix域套接字)的文件权限的用户可以通过转发的连接访问本地代理。 攻击者无法从代理获取密钥材料,但是他们可以对密钥执行操作,使其能够使用加载到代理中的身份进行身份validation。
(总之,在一定程度上你必须信任[email protected]。)
在旁注:
如果你发送大量数据,你最好使用tar-over-ssh而不是scp。 真的快得多
看看如何使用tar通过SSH