scp 用户1@主机1:某个文件 用户2@主机2:某个文件

scp 用户1@主机1:某个文件 用户2@主机2:某个文件

当我尝试执行

scp user1@host1:somfile user2@host2:somfile

我明白了

Host key verification failed.

lost connection

对两个主机的身份验证都是基于 ssh-key 的,但出于安全原因,私钥仅存储在发出上述命令的主机上。

此设置的另一个复杂之处是,host2 仅限 SFTP,因此无法访问 shell。

我还测试了较旧的 openssl/openssh (Debian lenny openssh-client 5.1) 组合以及从源代码构建的最新 openssl/openssh 版本 (openssl 1.0.0c、openssh 5.8)。行为相同。

值得一提的是,执行

scp user1@host1:somfile somfile

scp somfile user2@host2:somfile

依次通过临时文件进行工作。

我在这里做错了什么?

答案1

直到 OpenSSH 5.7,两个主机之间的复制都是直接进行的。换句话说,建立host2host1,使用host1已知主机密钥列表。

  • 您可以通过简单地连接到它来添加host2到文件。然后使用known_hostshost1代理转发host1使用本地运行的代理进行身份验证:

    ssh -oForwardAgent=yes host1 ssh host2 true
    
    scp -oForwardAgent=yes user1@host1:somfile user2@host2:
    

    ssh有此选项的快捷方式-A。它也可以添加到~/.ssh/config。)

  • 在 5.7 及更高版本中,您可以使用scp -3强制通过计算机进行复制:

    scp -3 user1@host1:somfile user2@host2:
    

    这可能会慢得多,因为host1→ 你 →host2

答案2

您没有运行 ssh-agent 吗?

相关内容