Ubuntu
將伺服器添加到 known_hosts
**我想從命令行將 github.com 添加到 known_hosts 文件,**因為我正在創建一個 puppet 清單來配置遠端伺服器。
我試過了:
"ssh-keyscan -H github.com > /home/ubuntu/.ssh/known_hosts"
但是當伺服器嘗試訪問 github 時:
Failed to add the RSA host key for IP address '207.97.227.239' to the list of known hosts (/home/ubuntu/.ssh/known_hosts).
我也試過:
"ssh-keyscan -H github.com,207.97.227.239 > /home/ubuntu/.ssh/known_hosts"`
但是訪問github會拋出:
Host key verification failed.
我確信這沒有額外的用處,但是如果我 ssh 我的伺服器,然後 ssh github 並按照步驟操作,我會收到以下消息
Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts
,然後它將完美執行。謝謝
我們通過將 known_hosts 文件放在 puppet 伺服器上並直接從 puppet 中提供文件來處理這個問題:
file{ "/home/appuser/.ssh/known_hosts": owner => "appuser", group => "appuser", mode => 755, source => "puppet:///modules/ssh/known_hosts", require => File["/home/appuser"]; }
這會從 puppet 儲存庫中複製格式正確的 known_hosts 文件,相應地設置使用者,並確保其具有正確的權限。對我們很有效。
在對已接受答案的評論中提到了這一點,但我只是遇到了這個問題,並認為這個更清潔的解決方案值得擁有自己的答案。
Puppet 的核心sshkey類型將密鑰安裝到伺服器範圍的 /etc/ssh/ssh_known_hosts 文件中,而無需破壞整個文件。對於這種情況:
sshkey {'github': name => 'github.com', ensure => present, key => '[GitHub key (just the part after ssh-rsa, starting with AAA)]', type => 'ssh-rsa', }
會很好地安裝它。