Kni*_*chi 8 ssh openssh github
我想通过ssh访问我的github存储库.当我第一次访问存储库时,系统会询问是否要将github ssh服务器添加到我的known_hosts文件中,这样可以正常工作.该请求也让我发现服务器的RSA密钥的指纹,我可以手动验证它是由github上提供的相同位置.
这些是OpenSSH 6.8和更新版本(以base64格式)显示的SHA256哈希:
SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 (RSA)
SHA256:br9IjFspm1vxR3iA35FWE+4VTyz1hYVLIE2t1/CeyWQ (DSA)
Run Code Online (Sandbox Code Playgroud)
问题是我想known_hosts在第一次访问我的git存储库之前通过向我的文件添加公钥来阻止该请求.这可以通过使用ssh-keyscan -t rsa www.github.com命令来完成,该命令将以known_hosts文件所需的格式提供公钥.但人们反复提到,这不安全,容易受到中间人攻击.他们没有提到的是如何正确地做到这一点.
那么如何使用github页面上提供的RSA指纹安全地获取ssh服务器的公共主机密钥呢?我或多或少地寻找一个ssh-keyscan命令的选项,让我添加预期的rsa指纹,并导致命令失败,如果主机指纹与给定的指纹不匹配.
感谢您的时间!
我会 不在这种情况下使用ssh-keyscan.
相反,我会使用它并通过将其指纹与GitHub提供的指纹进行比较来仔细检查结果.
然后继续进行SSH GitHub测试,检查我是否得到:
Hi username! You've successfully authenticated, but GitHub does not
provide shell access.
Run Code Online (Sandbox Code Playgroud)
因此,按照此处的建议,对于手动过程:
ssh-keyscan github.com >> githubKey
Run Code Online (Sandbox Code Playgroud)
生成指纹:
ssh-keygen -lf githubKey
Run Code Online (Sandbox Code Playgroud)
将它与GitHub提供的相比较
最后,将githubKey内容复制到您的~/.ssh/known_hosts文件中.
您可以使用以下方法自动执行该过程(仍包括指纹步骤检查)wercker/step-add-to-known_hosts:它是一个wercker步骤,但可以外推为其自己的独立脚本.
- add-to-known_hosts:
hostname: github.com
fingerprint: 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
type: rsa
Run Code Online (Sandbox Code Playgroud)
但这将缺乏检查help.github.com/articles/github-s-ssh-key-fingerprints:见下文.
使用
nmap获得SSH主机密钥指纹,然后比较一下ssh-keyscan指纹说:在这两种情况下,指纹来自相同的地方.
它与其他任何自动化解决方案一样容易受到MITM的攻击.验证SSH公钥的唯一安全且有效的方法是通过某些受信任的带外通道.(或者设置某种密钥签名基础设施.)
在这里,help.github.com/articles/github-s-ssh-key-fingerprints仍然是"受信任的带外频道".
根据VonC的回答,下面的脚本可以自动验证和添加密钥。像这样使用它:
$ ./add-key.sh github.com nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8
Run Code Online (Sandbox Code Playgroud)
它会告诉您是否成功验证并保存了指纹。
有关使用信息,请使用./add-key.sh --help
剧本:
$ ./add-key.sh github.com nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2364 次 |
| 最近记录: |