如果我运行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/validation了指纹列表,并回答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有两个条目,而不是一个呢?
通常, known_hosts文件包含每行上的主机名/ IP地址列表。 但是,在sshd的手册页中所描述的主机名被哈希(为了简化匹配?)时,这不会被使用:
或者,主机名可以以散列的forms存储,如果文件的内容被公开,隐藏主机名和地址。 散列主机名以“|”开始 字符。 只有一个散列主机名可能出现在一行中,并且上述否定或通配符运算符都不能应用。
所以要回答你的问题,
但为什么我在known_hosts中有两个条目,而不是一个呢?
其中一个是github.com ,另一个是github.com ,正如您在提示中所确认的那样
警告:将“github.com,192.30.253.113”(RSA)永久添加到已知主机列表中。
如果你把已知的主机哈希closures(没有理由这样做),你将只有一行,如我有:
github.com,192.30.252.128 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==