回答
有人必須同意第一個鍵是有效的。您可以要求用戶手動添加相關信息到〜/ .ssh/known_hosts(或者自己動手)。
正如Nathon提到的解決這個問題的正確方法是獲取已知密鑰列表中的主機密鑰。簡單的方法是手動ssh到主機,然後回答yes,然後密鑰將被緩存在$HOME/.ssh/known_hosts
中。必須爲每個將連接到的主機以及將運行該程序的每個用戶執行此操作。如果您在系統上擁有管理員權限,則從您運行的ssh還可以將主機密鑰添加到/etc/ssh/ssh_known_hosts
以使其可供所有用戶使用。
如果您不知道腳本將連接到哪個主機,則可能需要查看Expect
這樣的模塊來監視和響應主機密鑰提示。雖然自動化這一步顛覆了ssh提供的一些安全性。
是ssh
詢問您是否想即使主機的公鑰不檢查尚未連接的事實是你/etc/ssh/ssh_config
或~/.ssh/config
有StrictHostKeyChecking ask
(或yes
)的結果。如果您想自動將未知主機密鑰添加到您的known_hosts
文件中,您可以將其設置爲no
。如果你不想讓這永久的配置更改,您也可以使用它的命令行:
system("ssh -o StrictHostKeyChecking=no test.host.com");
在這兩種情況下,ssh
將發佈關於主機密鑰不匹配的將禁用密碼警告由於可能的中間人攻擊而進行身份驗證。您仍然可以使用公鑰認證進行登錄。
+1:對我來說這是正確的答案,而不是接受的答案! – Lars 2010-07-17 12:39:14
爲你+1:我必須同意;不知何故,我被這個奇怪的語法搞糊塗了。 – 2010-07-19 07:03:46
- 1. Docker,如何處理SSH密鑰,known_hosts和authorized_keys
- 2. 如何在〜/ .ssh目錄管理多個SSH密鑰
- 3. GNU如何處理相同的密鑰?
- 4. 保護SSH密鑰
- 5. SSH密鑰短語
- 6. AWS EC2 SSH密鑰
- 7. SSH密鑰交換
- 8. 共享SSH密鑰
- 9. Google Cloud SSH密鑰
- 10. 在Jenkins中爲Git管理SSH密鑰
- 11. 使用AWS的SSH密鑰管理
- 12. 使用TeamCity管理多個SSH密鑰
- 13. 管理heroku上的多個ssh密鑰
- 14. 如何使用java查找SSH RSA密鑰的密鑰長度
- 15. 如何在Phing中使用ssh密鑰
- 16. 如何讓SSH密鑰自動接受?
- 17. 如何使用多個ssh密鑰
- 18. Git:如何添加ssh密鑰?
- 19. 如何用ssh公鑰加密gpg?
- 20. 如何在Windows中生成ssh密鑰?
- 21. 如何查看github的SSH密鑰?
- 22. 密鑰處理例程
- 23. Android中的密鑰處理
- 24. $ _REQUEST密鑰衝突處理
- 25. Java加密器的密鑰處理
- 26. 使用SSH密鑰驗證SSH連接
- 27. ssh密鑰轉發無ssh-add
- 28. 好習慣:如何在android/java中處理密鑰庫密碼?
- 29. Net :: SCP/Net :: SCP :: Expect - 如何處理密碼與密鑰認證
- 30. PHP如何處理三字節加密的32字節密鑰
首先,閱讀* why * ssh詢問以及總是回覆yes的安全含義。然後決定這些是否可以接受。然後問如何去做。 – ysth 2010-07-16 17:34:42