使用 scp 和 ssh 连接 - 我可以直接在远程机器之间复制文件吗?

使用 scp 和 ssh 连接 - 我可以直接在远程机器之间复制文件吗?

我已通过 ssh 连接到远程计算机,并在该计算机上运行 scp 以从另一台远程计算机复制文件。我假设文件将直接在两台远程计算机之间复制,但传输速度表明它们是通过我的本地计算机复制的。这是正确的吗?是否可以避免这种情况?

答案1

根据维基百科你是对的,它正在通过你的连接进行路由:

远程到远程模式[编辑] 过去,在远程到远程安全复制中,SCP 客户端会打开与源主机的 SSH 连接,并请求它依次打开与目标的 SCP 连接。(远程到远程模式不支持打开两个 SCP 连接并使用原始客户端作为中介)。需要注意的是,在密码或键盘交互身份验证模式下操作时,SCP 不能用于从源远程复制到目标,因为这会将目标服务器的身份验证凭据泄露给源。但是,使用不需要用户输入的基于密钥或 GSSAPI 的方法可以做到这一点。[2]

最近,远程到远程模式支持通过发起传输的客户端路由流量,即使它是传输的第三方。这样,授权凭据必须仅驻留在发起传输的客户端(即第三方)上。

为了做您想做的事情,并避免第三方流量路由,您需要设置 ssh 密钥。

答案2

scp目前,在两个远程主机之间复制文件有两种可能:

  • 简单的方法可以直接工作,但缺点是您需要从 到 进行身份验证host1host2使用密码、存储在host1或转发的 ssh-agent 上的密钥):

    scp host1:file host2:file
    
  • -3选项增加了从你的主机直接向两台远程主机进行身份验证的可能性(不暴露身份验证信息),但你总是通过本地主机进行身份验证,并且你丢失大部分错误信息,因为实施。

    scp -3 host1:file host2:file
    

即使你直接传输数据,你也无法覆盖所有的带宽,除非你有抗凝血酶补丁已应用。

相关内容