Git clone/push/pull - 该用户名来自哪里?

Git clone/push/pull - 该用户名来自哪里?

我已经设置了 gitosis,并且能够通过 ssh 进行拉/推。Gitosis 安装在 Debian Lenny 服务器上,我使用来自 Windows 计算机 (msysgit) 的 git。奇怪的是,如果我loglevel = DEBUG在 gitosis.conf 中启用,在使用 gitosis 服务器执行任何操作时,我都会看到类似以下内容:

D:\Kaze\source\test-project>git pull origin master
DEBUG:gitosis.serve.main:Got command "git-upload-pack 'test_project.git'"
DEBUG:gitosis.access.haveAccess:Access check for '[email protected]' as 'writable' on 'test_project.git'...
DEBUG:gitosis.access.haveAccess:Stripping .git suffix from 'test_project.git', new value 'test_project'
DEBUG:gitosis.group.getMembership:found '[email protected]' in 'test'
DEBUG:gitosis.access.haveAccess:Access ok for '[email protected]' as 'writable' on 'test_project'
DEBUG:gitosis.access.haveAccess:Using prefix 'repositories' for 'test_project'
DEBUG:gitosis.serve.main:Serving git-upload-pack 'repositories/test_project.git'

From 192.168.175.128:test_project
 * branch            master     -> FETCH_HEAD
Already up-to-date.

问题是:为什么我[电子邮件保护]? 此电子邮件也位于全局user.email配置变量中。

昨天,安装 gitosis 时,它把我视为风@KAZE,这是我被添加到 gitosis-admin 组时使用的名称(并且成功了)。但今天 git(或 gitosis)开始将我视为[电子邮件保护]。对于我推送或克隆的所有存储库都是如此。我必须将此地址gitosis.conf直接添加到服务器上才能再次编辑配置(它有效)。keydir:[email protected]和中有 2 个公钥[email protected],它们的内容相同,并且它们具有风@KAZE结尾处。原始 URL 类似于git@lennyserver:test_project

现在的问题是 - 为什么 Git(或 gitosis)突然决定通过电子邮件而不是名称@机器名? 我在尝试设置 Gitosis 时做了一些更改(例如将服务器上的 git 更新到 1.6.0),但也许我破坏了本地 git 安装中的某些内容?

答案1

从 Gitosis 的角度来看,你的名字只是keydir你用来验证的公钥的名称。本地机器上的配置无关紧要,除非它会影响你使用的公钥,并且密钥末尾的字符串无关紧要——只是文件名。

您为公钥提供了两个名称,因此当您使用该密钥进行身份验证时,当它为该密钥寻找名称时,无法确定它会找到哪个名称。当您在 Gitosis 中更改其他内容时,大概会更改它找到的名称的任意选择。

(具体来说,我相信 Gitosis 会生成自己的文件authorized_keys来包含 中的所有键keydir,每行一个,并提供选项来告诉sshd仅让用户以受控的方式运行 Gitosis,并告诉 Gitosis 键的名称。如果多行有相同的键,我不确定最终会使用哪一个——可能是第一个,可能是最后一个,也许是任意的。Gitosis 写入它们的顺序也可能是任意的。但实际上,任意选择如何发生的细节并不重要,因为没有人保证它们在下次更新或sshd时不会改变。)sshdgitosis

您应该选择在 Gitosis 配置中使用哪个名称来引用自己,并且只保留keydir该名称下的密钥副本。

相关内容