如果我运行,系统会提示以下内容:git clone [email protected]:some-org/some-repo.git
The authenticity of host 'github.com (192.30.253.113)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
显然,我根据列表验证了指纹https://help.github.com/articles/github-s-ssh-key-fingerprints/,并回应yes
:
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.253.113' (RSA) to the list of known hosts.
...etc.
结果是二两个条目被添加到我的~/.ssh/known_hosts
文件中,都使用相同的密钥,并且都经过了散列处理。
如果我用 确认密钥ssh-keyscan github.com
,则密钥匹配。
但为什么我二中的条目known_hosts
,而不是一个?
答案1
通常,known_hosts
文件的每一行都包含主机名/IP 地址列表。但是,当主机名经过哈希处理(为了简化匹配?)时,不会使用此方法,如手册页中所述sshd
:
另外,主机名也可以以散列形式存储,这样如果文件内容被泄露,主机名和地址就会被隐藏。散列主机名以“|”字符开头。 一行中只能出现一个散列主机名,并且不能应用上述任何否定或通配符运算符。
所以回答你的问题,
但是为什么在known_hosts中有两个条目,而不是一个?
其中一个是github.com
,另一个192.30.253.113
正如你在提示中确认的那样
警告:将“github.com,192.30.253.113”(RSA)永久添加到已知主机列表中。
如果你关闭已知主机哈希功能(没有充分的理由这样做),你将只得到一行,例如:
github.com,192.30.252.128 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==