2013-08-26 30 views
1

奇怪的問題.. 我懷疑的ssh-鍵掃描,但也許我錯了..ssh沒有讀取.ssh/known_hosts裏面特定的ssh-keyscan條目?

ssh-keyscan -H -t ecdsa host1,1.1.1.1 >> ~/.ssh/known_hosts

命令獲取howt1的指紋進入的known_hosts(主機名和IP出現正確的散列)內的bug,但... 但是,當我使用主機名或IP ssh進入主機1時,系統會提示接受主機的公鑰。由於我「已經」在那裏,我認爲這是一個錯誤。

編輯:我應該提到,如果我沒有散列在known_hosts文件中的主機名和IP(ssh-keyscan沒有'-H'選項),那麼一切正常。 (-H記錄在man ssh-keyscan中)

有誰知道如何解決這個問題?或者這是假設爲什麼奇怪的原因工作的方式?

這是否可能是因爲known_hosts中的條目同時存在散列和後來當它比較名稱或IP時,它在技術上不匹配,因爲它不是「兩個」被比較的IP和主機名?

最後編輯:清理事情了,使其更簡單

由於提前,
馬克

回答

0

你在你的例子使用不同的語法。

如在手冊頁中定義的ssh-keyscan一般語法

ssh-keyscan [-46Hv] [-f file] [-p port] [-T timeout] [-t type] 
      [host | addrlist namelist] ... 

在第一種情況你要麼通過IP或主機名指定主機。在第二種情況下,您指定名單。爲了讓ssh-keyscan正常工作,它應該在名稱列表前提供一個addrlist

這是命令應該怎麼看起來像

ssh-keyscan -H -t ecdsa 1.1.1.1 host1,1.1.1.1 >> ~/.ssh/known_hosts 
+0

我嘗試了你的建議。 ssh'ing使用IP而不是主機名進入另一個盒子。這告訴我''1.1.1.1'正在一行中被散列,然後'host1,1.1.1.1'被散列在另一行上。 known_hosts文件證實了這一點。 (所以真的回到了原來的一個,因爲我提到該命令的所有其他變體都可以正常工作)感謝您嘗試幫助,儘管... – mlebel

1

如果要散列條目添加到您的known_hosts文件,你應該先湊它:

ssh-keygen -H 

從手冊頁SSH-凱基:

-H散列known_hosts文件。這將用指定文件中的散列表示替換所有主機名稱和 地址; 將原始內容移至帶有.old後綴的文件。 通過ssh和sshd可以正常使用這些哈希值,但是如果文件的內容爲 ,則不會透露標識信息 。此選項不會修改現有的散列主機名稱 ,因此可以安全地在混合散列和非散列名稱的文件上使用。

然後你就可以像這樣添加新條目到您的known_hosts:

ssh-keyscan -Ht ecdsa [hostname],[IP address] >> known_hosts 

而且你應該做的事。

相關問題