当我尝试执行一个
scp user1@host1:somfile user2@host2:somfile
我明白了
Host key verification failed.
lost connection
两台主机的身份validation都是基于ssh-key的,但是出于安全原因,私钥只存储在发出上述命令的主机上。
在这个设置中的另一个复杂的是,host2是SFTP专用的,所以没有shell访问。
我testing了一个较老的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
依次通过一个临时文件工作。
我在这里做错了什么?
在OpenSSH 5.7之前,直接在两台主机之间进行复制。 换句话说,与host2的连接是由host1 ,使用host1的已知host1密钥列表。
您可以通过连接host2将host2添加到host1的known_hosts文件中。 然后使用代理转发让host1使用您的本地运行代理进行身份validation:
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 。
你没有运行ssh-agent吗?