我使用以下说明为github设置了SSH登录,虽然它有效,但我无法弄清楚它的工作原理:https://help.github.com/articles/generating-ssh-keys/
我对SSH的理解如下:客户端创建密钥对,客户端向服务器提供公钥,当客户端想要登录时,他使用私钥加密服务器选择的消息,以证明他确实是客户端。
现在:我将我的公钥XXX上传到Github。当我做“ssh -T git@github.com”时,Github必须知道我正在尝试以我的身份登录,以便他可以使用XXX解密我的消息,对吧?所以ssh必须发送那些信息......但是ssh如何知道关于Github的任何信息,或者我的用户名是什么?如果我有多个密钥对 - 使用哪个密钥会怎么样?
答案 0 :(得分:4)
将SSH公钥添加到GitHub帐户时,将该密钥与GitHub帐户关联。
默认情况下,命令ssh -T git@github.com
会搜索 id_dsa 和 id_rsa 文件。要确认这一点,请尝试ssh -T git@github.com -v
。
如果您有与不同github帐户关联的密钥,则必须使用-i指定使用不同的帐户。 ssh -T git@github.com -i /path/to/mykey
答案 1 :(得分:3)
简而言之:
这是基于公钥加密技术,特别是数字签名技术(google了解更多详情)。
答案 2 :(得分:0)
在共享帐户方案中,身份验证/授权由应用程序处理。
我不确定Github是否正在使用它,但是非shell帐户授权的一个解决方案是Gitosis,它正好用于您描述的目的。每个用户都有单独的密钥对。这与Github的工作方式类似。
应用自述文件页面解释了Gitosis如何工作的基本概念(将认证和授权推迟到gitosis),但是机制可能需要审查源代码。基于粗略的检查,看起来这种方法的机制主要是通过服务器上的git钩子。