为什么git存储库管理器使用带有ssh连接的`git`用户名?

时间:2017-04-10 10:01:56

标签: git github gitlab

使用git存储库管理器(如GitHub,GitLab等)时,克隆项目的说明将远程的SSH连接说明为:

git@github.com:xxxx/yyyy.git

为什么这些存储库管理员要求使用git用户名(如git@github.com),而不是使用我的特定用户名?

在验证我的请求时,必须针对所有用户的Universe检查我的公钥/私钥auth?

2 个答案:

答案 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存储库提供访问控制和远程管理的工具。