在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显示了一些错误
答案 0 :(得分:5)
您需要使用类似
的行设置~gitolite / .ssh / authorized_keyscommand="/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并直接进入贝壳
正在运行
servername:testing.git
(请注意网址中存在git clone git@server:repositories/reponame
)。[一个合适的gitolite键只会让你克隆
repositories/
(注意缺少git@server:reponame
)]
答案 2 :(得分:0)
还有一件事要尝试:如果AllowGroups用于服务器上的sshd,请检查git-user是否包含在其中一个组中。