0

全部,

我正在使用 SSH 与 github/bitbucket 交谈,有时它可以工作,但有时它只是失败了,让我一无所知。当试图找出问题时,我意识到我实际上并不太清楚它是如何工作的:

  1. 如何选择私钥?
    我们可以使用 ssh-add 或 pageant 来加载私钥,但可以加载多个密钥 - 当我在发送请求后收到挑战时,ssh 客户端如何决定使用哪个私钥?
  2. 如何选择公钥?
    GitHub 服务器上有大量的公钥,当我向 github 发送请求(如 git push)时,我不记得我需要指定我在 GitHub 上注册的用户名(我们确实需要配置 user.name,但是我认为这仅用于标记您的提交) - 那么 GitHub 如何确定在接收请求时使用哪个公钥,甚至 GitHub 知道哪个用户正在发送请求(如何?),它如何从中选择正确的公钥多个密钥 - 请记住,我可以向我的帐户添加超过 1 个密钥。

谢谢。

4

1 回答 1

2

~/.ssh/id_rsa 文件默认被选中。

如果您需要提供另一个密钥,您可以在~/.ssh/config文件中使用 IdentityFile 指令。

Github 知道哪个帐户只是因为当受到挑战时,您的系统会提供一个用户名作为您的密钥挑战序列的一部分,并完成查找。然后交换密钥,验证或拒绝。

我建议您使用手册页。这是OpenSSH 项目的一个很好的参考资料,其中包含更多关于它在一般意义上是如何工作的信息。

Github 已经根据他们的需要修改了他们的 ssh 守护进程,但大多数情况下,他们必须遵循规范,因此在外部,我们不会看到行为上的差异,尽管我们获得了能够在经过身份验证后快速连接到服务的好处/授权我们被允许在存储库上执行的任何操作。

于 2013-07-31T05:57:52.967 回答