2

请帮助我理解我做错了什么。我在 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-admin 存储库:

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

并为新用户生成公钥(lodar.pub)

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

比我编辑 conf/gitolite.conf:

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
lodar@192.168.0.1's password:

我必须输入密码。

ssh gitadmin info
hello, gitolite, this is gitolite@lodar-14452 running gitolite3 v3.5.1-4-g2f48a3e on git 1.7.1
R W   gitolite-amdin
R W   testing

我究竟做错了什么?

4

2 回答 2

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

请参阅“ gitolite 之类的程序如何工作? ”:
想法是始终使用同一用户连接到 gitolite 服务器(在您的情况下,连接为 ' gitolite'),并打开一个 *非交互式 shell。
force-command ssh 行将调用 gitolite 脚本,其参数表示用户名(此处为 ' loadar'),因为该命名是使用~gitolite/.ssh/authorized_keys.

于 2013-06-04T07:17:24.587 回答
1
$pwd
/home/lodar/gitolite-admin/keydir    
$ssh-keygen -t rsa -f lodar

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

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

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

$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 中。谢谢您的帮助。它现在工作得很好。

于 2013-06-04T12:47:32.070 回答