我想从命令行将 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
,然后它就会完美运行。
谢谢
答案1
我们通过将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 repo 复制格式正确的 known_hosts 文件,相应地设置用户,并确保其具有正确的权限。对我们来说效果很好。
答案2
对已接受答案的评论中提到了这一点,但我刚刚遇到这个问题并认为这个更清晰的解决方案值得有自己的答案。
Puppet 的核心密码键入将密钥安装到服务器范围的 /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',
}
将会很好地安装它。