如何安全地将主机密钥添加到SSH known_hosts文件中?
我正在设置一个开发机器,并且我想(例如)当我使用SSH从github.com克隆一个仓库时,阻止git提示。
我知道我可以使用StrictHostKeyChecking=no (例如这个答案 ),但这不是安全的。
到目前为止,我发现…
Github发布他们的SSH密钥指纹https://help.github.com/articles/github-s-ssh-key-fingerprints/
我可以使用ssh-keyscan来获取github.com的主机密钥。
我如何结合这些事实? 给定一个预先填充的指纹列表,如何validationssh-keyscan的输出可以添加到known_hosts文件中?
我想我在问:
如何获得由ssh-keyscan返回的密钥的指纹?
假设我已经为了SSH而进行了MITM编辑,但是我可以信任github HTTPS页面(因为它有一个有效的证书链)。
这意味着我有一些(可疑的)SSH主机密钥(来自ssh-keyscan )和一些(可信的)密钥指纹。 我如何validation一个对另一个?
相关:如何散列ssh-keyscan输出的主机部分? 或者我可以在已知主机中混合散列/非散列主机?
最简单的方法是使用ssh-keyscan手动获取密钥,手动validation它们:
$ ssh-keyscan -t rsa github.com | ssh-keygen -lf - # github.com:22 SSH-2.0-libssh-0.7.0 2048 SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 github.com (RSA)
然后将它们添加到您的脚本中,然后运行“权威”公钥。
您可以在known_hosts文件中混合散列/非散列条目。
所以如果你想添加github键,你可以这样做:
ssh-keyscan github.com >> ~/.ssh/known_hosts
如果你想要哈希,添加-H
ssh-keyscan -H github.com >> ~/.ssh/known_hosts