Gitolite git clone需要ssh密码

时间:2012-09-17 21:23:05

标签: git ssh github gitolite

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

效果很好: git clone gitolite @ servername:testing.git

要求输入密码 git clone ssh://gitolite@servername/home/gitolite/repositories/testing.git

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

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

3 个答案:

答案 0 :(得分: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

随机网址,其中包含与此相关的信息(请参阅页面底部)

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
....

答案 1 :(得分:0)

如果第一个版本有效,则表示公钥已在名为“gitolite”的帐户下发布:~gitolite/.ssh/authorized_keys

此处描述了您遇到的权限问题:“Creating SSH keys for Gerrit and Hudson”:请注意,所有 .ssh的父目录不应具有组或其他的写权限:{ {1}},/home/home/yourUser

另外,你不应该用回购的完整路径克隆一个gitolite repo:/home/yourUser/.ssh是错误的(并且会彻底绕过gitolite)。
servername/home/gitolite/repositories/testing.git是对的。

来自gitolite V2 doc

  

以下问题表明你的驴子绕过gitolite并直接进入贝壳

     

正在运行servername:testing.git(请注意网址中存在git clone git@server:repositories/reponame)。

     

[一个合适的gitolite键只会让你克隆repositories/(注意缺少git@server:reponame)]

答案 2 :(得分:0)

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