通过apt安装,gitosis使用SSH key来认证用户,但用户不需要在主机上添加账号,而是使用服务器上的一个受限账号。 安装的过程需要在客户端和服务器之间切换,留意操作步骤之前的说明。这里服务器和客户端都是使用ubuntu linux。
服务器端(ip:192.168.1.254)
1. 安装 git
sudo apt-get install git-core
2. 安装 python 和 python-setuptools
sudo apt-get install python python-setuptools
3. 安装gitosis
cd /tmp
sudo git clone https://github.com/tv42/gitosis.git
cd gitosis
sudo python setup.py install
PS:git://eagain.net/gitosis 已经失效了,找了好久才有一个新的。
4. 创建git用户
sudo adduser
–system
–shell /bin/sh
–gecos ‘git user’
–group
–disabled-password
–home /home/git
git
客户端(也需要先安装 git)
5. 在 gitosis 管理员的机器上生成 密钥,把公钥重命名为comet@3GCOMET.pub,这里用scp传到服务器上
ssh-keygen -t rsa
mv id_rsa.pub comet@3GCOMET.pub
scp comet@3GCOMET.pub comet@192.168.1.254:comet@3GCOMET.pub
6.在 ~/.ssh/config 添加以下内容,以便连接到服务器
Host 192.168.1.254
Compression yes
IdentityFile ~/.ssh/id_rsa
服务器端
7.使用上面的 comet@3GCOMET.pub 初始化 gitosis
sudo -H -u git gitosis-init < comet@3GCOMET.pub
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
客户端
8.获取服务器上的 gitosis-admin 项目,会有keydir 文件夹和gitosis.conf
git clone git@192.168.1.254:gitosis-admin.git
9.添加新组jichuteam、用户comet@HP、项目jichu,并推送到远程服务器
注:如果客户端是windows,使用Puttygen生成公钥和私钥:参数为SSH-2 RSA,1024位,按需加上密码。
如果之前是使用ssh-keygen生成的,在这里直接Load private key,然后save private key,保存为ppk格式才能用。
复制puttygen显示的公钥保存为*.pub文件,注意不是”save public key”,保证公钥文件只有1行内容,否则不正确。把公钥给git的管理员,让他用gitosis-admin之类的方法把公钥加入git服务器,并设置好对应项目的权限。
在新的客户端生成密钥,并把公钥放到 gitosis-adminkeydir ,这里是comet@HP.pub
cd gitosis-admin
vi gitosis.conf
修改为下面内容,其中[gitosis]可以看gitosis/example.conf的说明,members 的 comet@HP 就是 comet@HP.pub 的文件名,多个用户用空格隔开
[gitosis]
gitweb = no
daemon = no
loglevel = DEBUG
[group gitosis-admin]
writable = gitosis-admin
members = comet@3GCOMET
[group jichuteam]
members = comet@HP
writable = jichu
git push
10.到其他地方建立项目根目录,并设置默认用户和邮箱,在.git/config添加远程服务器URL
mkdir jichu
cd jichu
git init
git config user.name Comet
git config user.email iamcomet@3gcomet.com
git remote add origin git@192.168.1.254:jichu.git
11.在 jichu 目录下进行开发,这里新建了 log.txt(一定要有新文件),提交到index,加上”initial import”信息并提交到本地仓库,最后是推送到远程服务器。
echo “begin develop” > log.txt
git add .
git commit -a -m “initial import”
git push origin master
服务器端
12.在服务器的 /home/git/repositories/ 可以看到有 jichu.git 的版本库。