ek_*_*_ny 3 git github ssh-keys
我最近在 cloud9 (c9.io) 上建立了一个项目。当你在 cloud9 上建立一个项目时,有一个 .ssh 目录,里面有公钥和私钥。我假设这些是在您设置帐户时生成的。
创建 git 存储库后,我将源设置为 GitHub 上的空存储库并尝试将其推送到上游。正如预期的那样,我没有权限。
我复制了我的公钥的内容并将其添加到 GitHub。那时我能够推送到 GitHub。
我很好奇为什么 GitHub 只需要公钥。当我试图推动时,幕后会发生什么?私钥的作用是什么?
私钥,顾名思义,是私有的。它是你的,也是你的。你永远不应该把私钥给任何人。
您的私钥允许您签署消息。然后您发送带有签名的消息,任何拥有您的公钥的人都可以验证签名是否与消息匹配。这就是公钥密码学的原理。因此,Github 只需要您的公钥来检查您是否就是您所声称的那个人。
SSH 公钥认证是challenge-response。
你的公钥和私钥在数学上是相关的,但是从公钥计算私钥在理论上是不可能的。选择密钥值,以便只有拥有私钥的人才能解密已使用相关公钥加密的消息。
继续简化解释,身份验证顺序如下
ek_ny:嗨,我是 ek_ny,我的公钥是
abc123.c9.io:哦,是吗?好吧,如果你真的是ek_ny,那么当我给你发送[加密秘密信息“魔法词是squeamish ossifrage”时,你知道我的意思
00:01:02:03:aa:...ek_ny:事实上,你给我发了[解密]“魔法词是squeamish ossifrage。”
c9.io:ek_ny,我的老朋友!很高兴见到你!进来吧!
使用 SSH,用户和主机都拥有密钥。这就是 SSH 在您第一次连接时要求您确认主机密钥的原因。目的是检测中间人攻击。由于Diffie-Hellman引导了整个过程,整个对话都是加密的。
你们实际上从未交换过敏感信息。这就是挑战-响应的想法。假设您有一把物理钥匙,声称可以打开门。为了向我证明这一点,你可以把钥匙给我,但我可能不会还给它。也许你甚至不想让我看到门后的东西。足以证明您的主张是能够轻轻地打开门,并且您永远不会失去这样做的钥匙。
另请参阅: 如何使用公钥登录 SSH 比使用密码更好?在 Unix 和 Linux SE 上。
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |