1. 程式人生 > >SCP傳送文件時提示No ECDSA host key is known forx.x.x.x and you have requested strict checking.問題的解決辦法

SCP傳送文件時提示No ECDSA host key is known forx.x.x.x and you have requested strict checking.問題的解決辦法

quest str targe ecdsa conf com dev 相關 nss

在使用SCP向其他設備傳送文件時,打印如下錯誤:

No ECDSA host key is known for x.x.x.x and you have requested strict checking.
Host key verification failed.
lost connection

網上給出的很多方案是將/root/.ssh/known_hosts對應ip的那一行刪除,但是我發現我的本地的環境沒有known_hosts這個文件。後來一個同事拋過來一個解決方案,按照如下方式,最終傳送成功。

scp -o stricthostkeychecking=no

從http://www.cnblogs.com/zhengah/p/4959682.html 摘出這一段,來描述下原理。

用OpenSSH的人都知ssh會把你每個你訪問過計算機的公鑰(public key)都記錄在~/.ssh/known_hosts。當下次訪問相同計算機時,OpenSSH會核對公鑰。如果公鑰不同,OpenSSH會發出警告, 避免你受到DNS Hijack之類的攻擊。
SSH對主機的public_key的檢查等級是根據StrictHostKeyChecking變量來配置的。默認情況下,StrictHostKeyChecking=ask。簡單所下它的三種配置值:
1.
StrictHostKeyChecking=no
#最不安全的級別,當然也沒有那麽多煩人的提示了,相對安全的內網測試時建議使用。如果連接server

的key在本地不存在,那麽就自動添加到文件中(默認是known_hosts),並且給出一個警告。
2.
StrictHostKeyChecking=ask #默認的級別,就是出現剛才的提示了。如果連接和key不匹配,給出提示,並拒絕登錄。
3.
StrictHostKeyChecking=yes #最安全的級別,如果連接與key不匹配,就拒絕連接,不會提示詳細信息。

對於我來說,在內網的進行的一些測試,為了方便,選擇最低的安全級別。在.ssh/config(或者/etc/ssh/ssh_config)中配置:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

但是我的本地環境下 sshd_config配置文件中沒有相關的配置,所以就在使用scp命令時,加入 -o stricthostkeychecking=no 選項。

SCP傳送文件時提示No ECDSA host key is known forx.x.x.x and you have requested strict checking.問題的解決辦法