我的 gitosis.conf 中有以下内容。(使用gitsosis-init < id_rsa.pub
我的笔记本电脑中的密钥创建)
[gitosis]
loglevel = DEBUG
[group gitosis-admin]
writable = gitosis-admin
members = michael@laptop
当我尝试时git clone git@SERVER:gitsos-admin.git
,出现以下错误:
Initialized empty Git repository in /home/michael/gitsos-admin/.git/
DEBUG:gitosis.serve.main:Got command "git-upload-pack 'gitsos-admin.git'"
DEBUG:gitosis.access.haveAccess:Access check for 'michael@laptop' as 'writable' on 'gitsos-admin.git'...
DEBUG:gitosis.access.haveAccess:Stripping .git suffix from 'gitsos-admin.git', new value 'gitsos-admin'
DEBUG:gitosis.group.getMembership:found 'michael@laptop' in 'gitosis-admin'
DEBUG:gitosis.access.haveAccess:Access check for 'michael@laptop' as 'writeable' on 'gitsos-admin.git'...
DEBUG:gitosis.access.haveAccess:Stripping .git suffix from 'gitsos-admin.git', new value 'gitsos-admin'
DEBUG:gitosis.group.getMembership:found 'michael@laptop' in 'gitosis-admin'
DEBUG:gitosis.access.haveAccess:Access check for 'michael@laptop' as 'readonly' on 'gitsos-admin.git'...
DEBUG:gitosis.access.haveAccess:Stripping .git suffix from 'gitsos-admin.git', new value 'gitsos-admin'
DEBUG:gitosis.group.getMembership:found 'michael@laptop' in 'gitosis-admin'
ERROR:gitosis.serve.main:Repository read access denied
fatal: The remote end hung up unexpectedly
我知道我的密钥被接受了,因为我已经尝试通过 SSH 登录,虽然没有分配终端,但授权有效。
答案1
我不确定您在粘贴问题时是否犯了错误,但您是否 100% 确定您使用了:git clone git@SERVER:gitsos-admin.git
而不是git@SERVER:gitosis-admin.git
......
这是一个微妙的变化,但你的例子表明你试图克隆吉佐斯-管理员.git并不是吉托西斯-管理员.git
答案2
您确定运行 gitosis 的用户具有存储库所在目录的访问权限吗?(以及其所有子目录,包括存储库本身。)我第一次设置 gitosis 服务器时就遇到了这个问题。
答案3
发生这种情况的另一个原因是密钥文件名与 gitosis.conf 中的名称不匹配。重点是:您的姓名出现在三个地方。首先,在 gitosis.conf 文件中。其次,在姓名密钥文件。第三,在密钥文件内,位于公钥的末尾。
我发现密钥文件的名称必须是您的用户名(在 gitosis.conf 中),并在其后附加“.pub”。因此,例如,如果您的用户名在 gitosis.conf 中是“mtiller”,那么您的密钥文件最好命名为“mtiller.pub”。密钥文件中的名称(据我所知)无关紧要。
这可能非常令人困惑,因为即使 Git 的调试输出也没有明确指出“无法找到用户 xyz 的密钥”,这真的很烦人。换句话说,当问题实际上是身份验证问题时,它会吐出授权消息/错误。
根据您导入密钥的方式,这可能会变得一团糟。虽然我不认为您在问题中提到的方法会导致这个问题,但我提到它是因为我在寻找名称不匹配问题的解决方案时遇到了您的问题,所以其他人可能会在某个时候遇到这个问题。
答案4
我知道这不是你问题的直接答案,但我没有足够的声誉来发表评论。Michael Tiller 所说的并不完全正确。我遇到了类似的问题,我在这里说明了
您在 gitosis.conf 中使用的名称和 ssh 密钥文件的名称确实需要相同。但是,这不需要以任何方式与 ssh 密钥文件中的用户名元素相对应。