我请求访问 Git 存储库,并在我提供公钥和私钥后获得批准。
(使用通用方法生成ssh-keygen -t rsa
,它给了我:
<user> @ <hostname> : ~/.ssh $ > ll
total 20K
-rw-------. 1 <user> 1.7K Mar 02 10:14 id_rsa
-rw-r--r--. 1 <user> 407 Mar 02 10:14 id_rsa.pub
-rw-r--r--. 1 <user> 1.3K Mar 01 14:25 known_hosts
)
然而,我不小心删除了我的主目录。幸运的是,我备份了所有重要文件,所以恢复它们并不麻烦。
但是,尝试使用旧的公钥和私钥再次克隆 Git 存储库时,我却做不到。 Git 要求我输入密码,就像它对待任何非授权用户一样。
因此,我必须使用我当前的公钥和私钥再次请求访问权限。
经过比较,我发现新的钥匙实际上和原来的不一样。
所以,我的问题是,
- 为什么同一台机器上的用户的公钥和私钥会发生变化?
- 继续这个问题,为什么在没有其他变化的情况下我不能使用旧的公钥和私钥来访问存储库?
- 如果我使用 再次创建密钥,密钥会改变吗
ssh-keygen -t rsa
?
如果需要,我可以提供更多信息。
答案1
- 密钥对与您作为用户或您的机器无关。想象一下你家的钥匙被偷了。钥匙并不与您绑定,任何人都可以使用它们来打开您的门。同样,如果我拿到了你的私钥,我就可以用它来更改你的 Github 存储库。
- 如果您希望使用新密钥和旧密钥访问存储库,则需要确保民众的钥匙两个都密钥对上传到Github。如果 Github 只有您的新密钥,那么当您使用旧密钥对时,它无法对您进行身份验证。
- 是的,钥匙会改变。这就是重点。想象一下为您的门购买一把新锁。如果您的旧钥匙与新钥匙相同,那对您没有任何好处,尤其是。如果您因为有人偷了您的旧钥匙而换锁。如果您的 ssh 密钥之一遭到泄露,您只需生成新密钥并在删除旧密钥后将相应的公钥上传到 Github 即可。您还可以拥有多个密钥对。生成任意数量的数据并将其用于不同的目的。这类似于拥有多把钥匙来打开房子里的多把锁。
也永远不要泄露您的私钥。私钥用于验证您的身份。如果我拿到了你的私钥,我就可以假装是你。 Github 无法区分。除了您之外没有人需要知道您的私钥是什么。如果您已将私钥上传到某处,我建议将其删除,生成新的私钥对并上传新的公钥,以确保安全。
阅读有关公钥加密的更多信息这里。
答案2
我从未将我的私钥交给任何人。公钥不知何故发生了变化,所以当有人试图向我发送硬币时,我没有收到它们。他们一如既往地使用公钥,但是这一次,从我这边查看公钥,它缺少最后几个字符。怎么会发生这种事?我从来没有修改过按键的设置。
知道我的公钥如何不再显示最后 4 或 5 个字符吗?