当我需要在两个远程服务器之间复制一些文件时,我通常
scp -3 user@server1:path user@server2:path
不幸的是,由于这会通过我的机器路由流量,所以当文件“很大”并且服务器彼此“靠近”时,速度会非常慢......
您是否知道有什么方法可以实现常规的“直接传输”行为scp
(即:否-3
),同时将身份验证委托给我的机器(即:像-3
)?
..也许还有其他scp
选择?
答案1
我能想到的最接近的建议是使用ssh-agent
- 如果您还没有代理,请启动一个:
ssh-agent bash
- 加载密钥:
ssh-add
ssh
到一个主机并让它启动到另一台主机的复制:scp user@server1:path user@server2:path
不使用scp
不带-3
标志的命令,您可以明确地ssh
选择一台主机并启动scp
,然后由您决定是否要ssh
或server1
。server2
使用我上面给出的命令,scp
将为您选择一个。
从安全角度来看,使用存在危险ssh-agent
,因为服务器将具有完全访问权限,可以访问代理中的密钥,甚至可以将其用于除此文件传输之外的其他目的。
如果您不想信任任何一台服务器访问另一台服务器,但想确保只有客户端主机可以访问密钥,并且服务器可以安全地相互通信,但只会传输您指定的文件而不执行任何其他操作,那么您将需要一些其他工具。我不认为这可以通过 来实现scp
。
答案2
为什么不能使用公钥身份验证,在 .ssh/config 中将 ForwardAgent 设置为 yes,然后只使用 scp user@server1:path user@server2:path ?我试过了,对我来说是有效的。