2013-06-04 16 views
2

请帮我理解我做错了什么。我在CentOS 6.4上有服务器,我需要安装gitolite v3。我在做什么?第一我是安装使用下一个命令之一:在Centos 6.4上安装gitolite v3。第二位用户询问密码

yum install git* perl-Time-HiRes 

useradd -m --system --shell /bin/bash --user-group gitolite 

su - gitolite 

mkdir bin 


echo "PATH=$HOME/bin:$PATH" > .bash_profile 

source .bash_profile 

ssh-keygen -t rsa 

cp .ssh/id_rsa.pub ./gitolite.pub 

git clone git://github.com/sitaramc/gitolite 

gitolite/install -ln 

gitolite setup -pk gitolite.pub 

安装成功。比我克隆gitolite管理员库:

git clone gitadmin:gitolite-admin 
cd gitolite-admin/keydir 

,并产生比我编辑的conf/gitolite.conf新用户的公钥(lodar.pub)

ssh-keygen -t rsa -f lodar 
mv ./lodar ../../.ssh/lodar 

repo gitolite-admin 
    RW+ = gitolite 
repo testing 
    RW+ = @all 
repo empty 
    RW+ = lodar 

提交所有更改:

git add keydir/lodar.pub 
git commit -m 'add user lodar and new repo empty' 
git push 

就是这样。推动也是成功的。所有操作后,我创建的.ssh/config中

Host gitadmin 
    User gitolite 
    Hostname 192.168.0.1 
    Port 22 
    IdentityFile ~/.ssh/gitolite 

Host gitlodar 
    User gitolite 
    Hostname 192.168.0.1 
    Port 22 
    IdentityFile ~/.ssh/lodar 

但如果我尝试使用

ssh gitlodar info 
[email protected]'s password: 

连接,我必须输入密码。

ssh gitadmin info 
hello, gitolite, this is [email protected] running gitolite3 v3.5.1-4-g2f48a3e on git 1.7.1 
R W gitolite-amdin 
R W testing 

我在做什么错?

+0

我明白你的意思是'cp'而不是'mv',但我可以*确保*你的用户应该在你的'〜/ .ssh/config'文件中是'gitolite',如我在下面的回答中所提到的。总是'gitolite'。 – VonC

回答

1

你做到:

mv ./lodar ../../.ssh/lodar 

我认为你的意思

cp ./lodar.pub ../../.ssh/ 
mv ./lodar  ../../.ssh/ 

因为如果你不复制~/.ssh公钥,你不能将能够在ssh来使用它会话。

但对方误以为是在你的~/.ssh/config文件:

Host gitlodar 
    User gitolite   # not loadar! 
    Hostname 192.168.0.1 
    Port 22 
    IdentityFile ~/.ssh/lodar 

请参阅“How do programs like gitolite work?”:
的想法是总是使用相同用户连接到gitolite服务器(在你的情况下,连接为'gitolite'),并打开一个*非交互式shell。
强制命令ssh行将使用表示用户名称的参数(此处为'loadar')调用gitolite脚本,因为该名称是使用公钥在~gitolite/.ssh/authorized_keys中注册的。

1
$pwd 
/home/lodar/gitolite-admin/keydir  
$ssh-keygen -t rsa -f lodar 

最后一条命令生成了两个键:public(lodar.pub)和private(lodar)。我在客户端计算机上的.ssh中移动了私钥。公众之一留在keydir。

$mv ./lodar ../../.ssh/lodar 

这就是为什么'git push'用户lodar添加到giotlite回购后。我通过命令在服务器上检查了它

$gitolite sshkeys-lint 
sshkeys-lint: === checking authkeys file: 
sshkeys-lint: === checking pubkeys: 
sshkeys-lint: === gitolite.pub maps to user gitolite 
sshkeys-lint: === lodar.pub maps to user lodar 

你是对的。我的错误是在我的.ssh/config。谢谢您的帮助。它现在工作得很好。

+0

对。 +1。我已在我的答案中添加了正确的cp/mv命令以提高可见性。 – VonC

+0

非常感谢。我会纠正我的第一篇文章,并将其重命名为“如何为其他人安装gitolite”。 – wondertalik