Ssh

scp user1@host1:somefile user2@host2:somefile

  • February 4, 2011

當我嘗試執行

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/openssh 版本(openssl 1.0.0c、openssh 5.8)進行了測試。相同的行為。

還值得一提的是,執行

scp user1@host1:somfile somfile

scp somfile user2@host2:somfile

按順序通過臨時文件工作。

我在這裡做錯了什麼?

在 OpenSSH 5.7 之前,兩台主機之間的複制是直接完成的。換句話說,與 的連接host2是*從host1*使用host1的已知主機密鑰列表進行的。

  • 您可以通過簡單地連接到文件來添加host2known_hosts文件。host1然後使用代理轉發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由於→ you →host2,這可能會慢得多。

引用自:https://serverfault.com/questions/231082