当我尝试执行
scp user1@host1:somfile user2@host2:somfile
我得到
Host key verification failed.
lost connection
对两台主机的身份验证都是基于 ssh 密钥的,但是出于安全原因,私钥仅存储在发出上述命令的主机上。
此设置中的另一个复杂问题是,host2 仅支持 SFTP,因此无法访问 shell。
我还使用较旧的 openssl/openssh(Debian lenny openssh-client 5.1)组合和从源代码(openssl 1.0.0c,openssh 5.8)构建的最新 openssl/openssh 版本进行了测试。同样的行为。
还值得一提的是,执行
scp user1@host1:somfile somfile
scp somfile user2@host2:somfile
依次通过临时文件工作。
我在这里做错了什么?
在 OpenSSH 5.7 之前,两台主机之间的复制是直接完成的。换句话说,连接到host2是从host1,使用host1的已知主机密钥列表。
您可以通过简单地连接到host2该known_hosts文件来添加到该文件host1。然后使用代理转发让host1使用本地运行的代理进行身份验证:
ssh -oForwardAgent=yes host1 ssh host2 true
scp -oForwardAgent=yes user1@host1:somfile user2@host2:
Run Code Online (Sandbox Code Playgroud)
(此选项ssh有一个快捷方式-A。它也可以添加到~/.ssh/config。)
在 5.7 及更高版本中,您可以使用scp -3强制通过您的计算机进行复制:
scp -3 user1@host1:somfile user2@host2:
Run Code Online (Sandbox Code Playgroud)
这可能会慢得多,因为host1?你 ?host2.
| 归档时间: |
|
| 查看次数: |
607 次 |
| 最近记录: |