4

在 Ubuntu 服务器上使用 Gitolite。有一个我正在处理的项目,我需要 git 命令的特定语法。

效果很好:

git clone gitolite@servername:testing.git

要求输入密码

git clone ssh://gitolite@servername/home/gitolite/repositories/testing.git

一个接一个地从同一个盒子里跑出来。我可以输入密码,它可以工作。但我需要自动工作。听起来像是 ssh pub/private 密钥的问题。有任何想法吗?

更新:文件权限有问题。不确定too命令之间的区别。但是/var/log/auth.log显示了一些错误

4

3 回答 3

5

您需要使用类似的行设置 ~gitolite/.ssh/authorized_keys

command="/home/gitolite/bin/gl-auth-command <USERNAME>",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA...KEY.HERE...ZZZZ== user@label

包含与此相关信息的随机 URL(请参阅页面底部)

http://www.geekgumbo.com/2011/10/18/ssh-and-the-gitolite-installation-part-2/

确保根据 SSH 要求更改 ~gitolite/.ssh/authorized_keys 的所有权:

chown gitolite: ~gitolite/.ssh/authorized_keys
chmod go-w ~gitolite/.ssh/authorized_keys

编辑:反映您将“git”更改为“gitolite”系统用户名的编辑。

使用以下命令测试您从客户端的访问:

ssh -l gitolite -i <file_id_rsa_foobar> -v -o PasswordAuthentication=no -T <host>

在我的本地系统上添加 -T 似乎需要获取横幅(输入借口错误):

....
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/username/.ssh/id_rsa_foobar
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/username/.ssh/id_dsa_foobar
debug1: Remote: Forced command: /home/gitolite/bin/gl-auth/command <username>
....
hello <username> this is gitolite vX.X.XX-g0123abcd running on git X.X.X
the gitolite config gives you the following access:
    R   W    mydir/project1
....
于 2012-09-17T21:28:40.900 回答
0

如果第一个版本有效,则意味着公钥已在名为 ' gitolite':的帐户下发布~gitolite/.ssh/authorized_keys

您遇到的权限问题在此处描述:“为 Gerrit 和 Hudson 创建 SSH 密钥”:请注意, .ssh 的所有父目录不应具有组或其他的写权限:/home, /home/yourUser, /home/yourUser/.ssh

另外,您永远不应该使用 repo 的完整路径克隆 gitolite repo:servername/home/gitolite/repositories/testing.git是错误的(并且会完全绕过 gitolite)。
servername:testing.git是正确的。

来自gitolite V2 文档

以下问题表明您的 pubkey 正在绕过 gitolite 并直接进入 shell

运行git clone git@server:repositories/reponame(注意repositories/URL 中的存在)有效。

[正确的 gitolite 密钥只会让你 git clone git@server:reponame(注意没有repositories/)]

于 2012-09-17T21:31:11.430 回答
0

还有一件事要尝试:如果 AllowGroups 正在用于服务器上的 sshd,请检查 git-user 是否包含在其中一个组中。

于 2013-10-16T09:12:49.203 回答