我有大量数据要从一台服务器发送到另一台服务器。我使用私钥通过 ssh 访问服务器。
问题是我不能使用该密钥将 scp 文件从一个这样的服务器发送到另一个服务器 - 服务器一没有服务器二期望的私钥(只有公共部分),所以二不允许从一访问。
发送文件的唯一方法是先将它们发送到我的计算机(太慢),将私钥发送到其中一台服务器(在这种情况下可能不会爆炸,但我真的很讨厌这样的解决方案),或者创建额外的仅用于该服务器或其中一台服务器的帐户。
ssh 没有办法让 ssh 会话转发授权吗?那真是太好了。
假设您在两台服务器上的 ~/.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。)