使用gitolite对git仓储进行权限配置
gitolite在近期做了很多代码改动,升级到了v3版本,而我使用的是v3.5.2。在《Git权威指南》中所提及的是v2版本,有很多东西已经不适合当前的v3版本,比如安装和用户自有仓储的配置,一些公用的部分有一些从书中摘抄而来。
1.ssh协议
SSH 协议用于为 Git 提供远程读写操作,是远程写操作的标准服务,在智能HTTP协议出现之前,甚至是写操作的唯一标准服务。
ssh可用于远程登录,服务端需要安装openssh-server,客户端需要安装openssh-client。
之所以介绍ssh协议是因为gitolite以及gitosis都是基于ssh公钥认证的。
$ ssh-keygen
该命令会在用户目录下.ssh目录下生成两个文件
该命令会在用户目录下.ssh目录下生成两个文件
id_rsa
私钥文件。是基于 RSA 算法创建。该私钥文件要妥善保管,不要泄漏。
id_rsa.pub
公钥文件。和 id_rsa 文件是一对儿,该文件作为公钥文件,可以公开。
私钥文件。是基于 RSA 算法创建。该私钥文件要妥善保管,不要泄漏。
id_rsa.pub
公钥文件。和 id_rsa 文件是一对儿,该文件作为公钥文件,可以公开。
$ ssh-copy-id -i ~/.ssh/id_rsa.pub
user@server
将本地公钥提供给远程服务器,以达到无需口令直接登录的效果。实际上是将id_rsa.pub添加到authorized_keys中,直接操作authorized_keys效果一样。
远程登录方法:
ssh
user@server
使用主机别名方法登录:
编辑~/.ssh/config
编辑~/.ssh/config
host server
user admin
port 22
identityfile ~ /.ssh /jiangxing #指定登录时使用的本地公钥
user admin
port 22
identityfile ~ /.ssh /jiangxing #指定登录时使用的本地公钥
本地可以生成不同别名的公钥,方法是:
ssh-keygen -f ~/.ssh/<filename>
2.创建git用户
$ sudo adduser --system --shell /bin/bash --group git
有的系统,只允许特定的用户组(如 ssh 用户组)的用户才可以通过 SSH 协议登录,这就需要将新建的 git 用户添加到 ssh 用户组中。
$ sudo adduser git ssh
设置密码
$ passwd git
3.生成ssh key
切换到git用户:
$ su git
$ ssh-keygen
$ ssh-copy-id
git@127.0.0.1
4.下载gitolite
git clone git://github.com/sitaramc/gitolite
5.安装配置
我是安装在git用户根目录下的。
在根目录下创建bin文件夹
然后执行:
~
/gitolite
/install
-to
~
/bin
mv ~ /.ssh /authorized_keys ~ /git.pub
~ /bin /gitolite setup -pk ~ /git.pub
mv ~ /.ssh /authorized_keys ~ /git.pub
~ /bin /gitolite setup -pk ~ /git.pub
成功后出现:
初始化空的 Git 版本库于
/home
/git
/repositories