我正在尝试设置一个 gitolite 实例,并遇到一个问题,我按照通常的程序添加用户(即将公钥文件添加到 keydir/xxx.pub;提交并推送到上游),但随后我我发现我无法使用我添加的 key 克隆存储库。
我已经验证我对 gitolite-admin 所做的提交(添加公钥)已成功推送到上游(即到 gitolite 安装中的裸 gitolite-admin 存储库)。
我注意到“gitolite”用户的authorized_keys 文件没有进行相应的更改,这对我来说似乎是错误的 - 我希望看到在那里添加公钥,我怀疑这就是身份验证的原因不工作。
我还可以从哪里寻找解决此问题的方法?
最佳答案
好的,我想我看到了导致此情况的事件顺序:
1) 编辑 gitolite-admin 的本地克隆(添加 xxxxxx.pub 并编辑 gitolite.conf)
2) 推送到 master - 失败并显示远程:检查 rc 文件中的 GL_GITCONFIG_KEYS 以了解如何允许它
3)修复.gitolite.rc中的相应配置
4) 再次尝试步骤(2);成功
5) 观察.ssh/authorized_keys 尚未更新。
6) 对 gitolite-admin 进行另一次编辑(微不足道的更改;仅添加注释)
7) 将 gitolite-admin 推送到 master
8) 所有 key 均在 .ssh/authorized_keys 中正确设置。
问题是,在(2)中失败时,提交已成功推送到上游,但更新authorized_keys的 Hook 由于给定的原因而无法运行;在尝试重复推送(步骤 4)时,git 观察到推送是无操作,并且钩子(Hook)没有运行。对 gitolite-admin (6) 进行一个简单的更改并再次推送 (7) 强制 git 执行实际的推送操作并执行 Hook 。
这是一个相当旧的 gitolite 版本(v1.5.7),出于实际原因我必须使用它,所以我不知道最新版本是否也会这样。
关于gitolite - keydir 条目不会传播到authorized_keys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24149802/