我的 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 登录,虽然不会分配终端,但授权有效。
我不确定您在粘贴问题时是否犯了错误,但您是否 100% 肯定您使用过:
git clone git@SERVER:gitsos-admin.git
而不是git@SERVER:gitosis-admin.git
...这是一个微妙的变化,但您的示例显示您尝试克隆gitsos -admin.git而不是gitosis -admin.git
您确定运行 gitosis 的用户具有对存储库所在目录的访问权限吗?(以及它的所有子目录,包括 repo 本身。)我自己在第一次设置我们的 gitosis 服务器时遇到了这个问题。
发生这种情况的另一个原因是密钥文件名称与 gitosis.conf 中的名称不匹配。重要的一点是:你的名字出现在三个地方。首先,在 gitosis.conf 文件中。第二个是密钥文件的名称。第三,在公钥末尾的密钥文件中。
我发现密钥文件的名称必须是您的用户名(在 gitosis.conf 中)并附加“.pub”。因此,例如,如果您的用户名在 gitosis.conf 中是“mtiller”,那么您的密钥文件最好命名为“mtiller.pub”。密钥文件中的名称(据我所知)无关紧要。
这可能会非常令人困惑,因为即使 Git 的调试输出也没有明确说出诸如“找不到用户 xyz 的密钥”之类的内容,这真的很烦人。换句话说,当问题确实是身份验证问题时,它会吐出授权消息/错误。
根据您导入密钥的方式,这可能会搞砸。尽管我认为您在问题中提到的方法不会导致此问题,但我之所以提到它,是因为我在寻找名称不匹配问题的解决方案时遇到了您的问题,因此其他人可能会在某个时候出现该问题。
我知道这不是您在这里问题的直接答案,但我没有足够的代表。发表评论。Michael Tiller 所说的并不完全正确。我遇到了一个类似的问题,我在这里说明了
如何让 gitosis 区分具有相同用户名的两个用户
您在 gitosis.conf 中使用的名称和 ssh 密钥文件的名称需要相同。但是,这不需要以任何方式与 ssh 密钥文件中的用户名元素相对应。