使用git存储库管理器(如GitHub,GitLab等)时,克隆项目的说明将远程的SSH连接说明为:
git@github.com:xxxx/yyyy.git
为什么这些存储库管理员要求使用git
用户名(如git@github.com
),而不是使用我的特定用户名?
在验证我的请求时,必须针对所有用户的Universe检查我的公钥/私钥auth?
答案 0 :(得分:5)
Git内置了自己的身份验证.Git只使用操作系统提供的任何内容。
在操作系统级别,使用Linux服务器,如果您自己在该Linux服务器上拥有帐户,则只能ssh <server>
。我怀疑你在GitHub的服务器上没有帐户。 :-)但是一些名为git
的人确实。
但是,他的登录shell不是常规命令shell。它不会运行常规Linux命令。当git(是John Git,还是Git Smith?)登录时,“他的”“shell”被重定向(实际上是通过ssh本身)到一个单独的程序,而不是Git的一部分,它比较传入的密钥 - 是,你得到了所有用户的所有密钥。这让他的外壳弄清楚了,不,这不是John Git,而是jwa
。它是shell或其衍生的其他部分,可以jwa
访问jwa
的存储库。
gitolite
代码(主要用Perl编写)提供了一个如何在任何类Unix服务器上执行此操作的示例。但是,一旦你通过几百个授权密钥,停止使用线性搜索来查找密钥,即停止使用sshd本身内置的东西,可能是明智之举。查找数据库中的密钥会快得多。
答案 1 :(得分:1)
正如@torek上面的回答git有自己的传输协议,除了他描述的git之外还使用gitosis
https://git-scm.com/book/no-nb/v1/Git-on-the-Server-Gitosis
gitosis
是用python编写的,是一个为托管的Git存储库提供访问控制和远程管理的工具。