由于CentOS已经内置了OpenSSH
,如果您的系统没有,请自行安装。
查看ssh版本
$ ssh -V
# 输出以下表示没问题,可以继续。 版本可能不一致,能用即可。
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
避免系统环境和其他的不一致,请核对您系统的版本,其他发行版请对应修改。
2. 安装git
建议以下操作都切换到root
# 请确保您切换到了root账户
$ su root
$ yum install -y git
# 验证是否安装成功
$ git --version
# 输出如下内容表示成功:
git version x.x.x.x
3. 添加git的管理的账户和设置密码
设置专门管理git的账号非必须,但是建议这么操作。
# 添加git账户
$ adduser git
# 修改git的密码
$ passwd git
# 然后两次输入git的密码确认后。
# 查看git是否安装成功
$ cd /home && ls -al
# 如果已经有了git,那么表示成,参考如下:
drwxr-xr-x. 5 root root 4096 Apr 4 15:03 .
dr-xr-xr-x. 19 root root 4096 Apr 4 15:05 ..
drwx------ 10 git git 4096 Apr 4 00:26 git
# 默认还给我们分配一个名字叫git的组。
5.2 配置客户端的ssh私钥并上传服务器并改名为你客户端配置的username
git --config 配置username和email
git config --global user.email "you@example.com" git config --global user.name "Your Name"
以下是客户端创建ssh私钥和拷贝的过程,如果您有私钥越过创建私钥的过程。
请用您的客户端进入终端(如果只有一台电脑,可以用不同的账号模拟不同客户端)
第一步: 创建客户端的ssh私钥和公钥
检查是否已经拥有ssh公钥和私钥:进入用户的主目录。
用户主目录:
Windows系统:C:\Users\用户名
Linux系统:/home/用户名
Mac系统:/Users/用户名
然后查看是否有.ssh
文件夹,此文件夹下是否有如下几个文件。
# 用户主目录的.ssh文件夹下
.ssh
├── id_rsa
└── id_rsa.pub # 我们要用的私钥
如果没有,那么用ssh-keygen创建ssh的私钥。
ssh-keygen -t rsa
# 接下来,三个回车默认即可。
创建私钥成功后,在查看用户目录是否有意加有了公钥文件id_rsa.pub
查看这个文件内容的最后,用户名就是@前面的,也就是你的电脑名称。
在别的电脑或备份机中,id_rsa放到.ssh文件夹里,就有权限了。
第二步: 拷贝私钥到git的服务器
如何把客户端的文件拷贝到服务器端,我建议用scp
命令进行拷贝。
以下以mac系统为例:
# 首先进入我的用户主目录的.ssh目录下,注意用户名xxx替换成自己的
$ cd /Users/xxx/.ssh
# 以下命令是:把本地的id_rsa.pub文件拷贝到 aicoder.com服务器,登录aicoder.com服务的账号是git。
# 冒号后面默认就是git账号的主目录,最后文件被保存成malun.pub
# 注意:把域名换成你自己的或者ip,最后的文件名可以自己定,后面还有用。
$ scp ./id_rsa.pub git@aicoder.com:.ssh/malun.pub
7. git的自动权限管理:gitolite(不要跟上面的步骤混做!!!)
如果团队大点的,我们可以用gitolite
管理,而且使用很方便。
7.1 gitolite的安装和配置
以下配置此承接第5,如果第6步您已经操作,请注意第二步的说明。
第一步:添加gitolite
依赖的perl
的包
$ yum install 'perl(Data::Dumper)'
第二步:清空服务器端配置的ssh的公钥
确保:~/.ssh/authorized_keys
文件是空的,或者不存在。如果已经存在,建议你把他改名即可,比如:authorized_keys.bak
第三步:上传管理员的客户端的ssh公钥到服务器
把你管理员电脑的ssh的id_rsa.pub
文件拷贝到服务器的: $HOME/YourName.pub
YourName可以自定义,最好根据不同伙伴的名字命名。
参考:
# mac客户端
$ scp /Users/fly/.ssh/id_rsa.pub git@aicoder.com:malun.pub
第四步:安装配置gitolite
用git账号登录,并执行如下命令。
# 切换到git账号
$ su git
# 进入git主目录
$ cd /home/git
# 下载gitolite的仓库
$ git clone https://github.com/sitaramc/gitolite
# 创建bin文件夹,必须!!!
$ mkdir -p $HOME/bin
# 用下载下来的仓库中的insall执行安装操作,指向的目录就是上一命令行创建的目录
$ ./gitolite二进制/install -to $HOME/bin
# 把上传到服务器的 管理员的公钥setup到gitolite中,注意:YourName.pub改成你自己的文件名。
$ ~/bin/gitolite setup -pk ~/YourName.pub
# 此时安装配完成后,查看git主目录
$ ls /home/git
drwxr-xr-x 7 git git 4096 Apr 3 23:50 bin # 我们创建的存放gitolite二进制
drwxrwxr-x 6 git git 4096 Apr 3 23:40 gitolite
drwx------ 6 git git 4096 Apr 3 23:52 .gitolite
-rw------- 1 git git 7130 Apr 3 23:52 .gitolite.rc
-rw------- 1 git git 398 Apr 3 23:39 malun.pub # 管理员的公钥
drwxrw---- 3 git git 4096 Apr 3 23:40 .pki
-rw------- 1 git git 19 Apr 4 00:26 projects.list # 仓库列表(gitolite自动创建)
drwx------ 5 git git 4096 Apr 4 00:26 repositories # 存放所有仓库文件夹
drwx------ 2 git git 4096 Apr 4 15:50 .ssh
# repositories目录下已经有了两个git仓库了。
# .
# |-- gitolite-admin.git # 管理配置权限的仓库
# `-- testing.git # 测试仓库
好了,到此位置,管理员就可以直接把默认的远程管理的仓库gitolite-admin直接clone到本地进行管理git服务了。
第五步:管理员在本地管理和配置服务器端的仓库
下载服务器端的远程管理仓库
# 下载远程管理仓库, 请把aicoder.com换成你自己服务器的域名或者ip
$ git clone git@aicoder.com:gitolite-admin
$ cd gitolite-admin
# 目录结构如下:
# .
# ├── conf # 配置文件夹
# │ └── gitolite.conf # 配置权限的文件
# └── keydir # 客户端的公钥文件夹,所有伙伴的公钥要放到此目录下
# └── malun.pub
7.2 gitolite的权限配置
- 添加其他开发的小伙伴把小伙伴的公钥发给管理员。管理员添加到
gitolite-admin
仓库的keydir
目录下,注意文件名字格式为username.pub
,username就是配置权限时的用户名。 - 配置用户对仓库的读写权限直接修改conf文件夹下的,gitolite.conf文件。简单解释下几个用法:
repo
代表仓库的意思,如果新添加一个repo,代表服务端新建一个空仓库,仓库push到服务端后会自动创建。RW
代表可读可写@all
代表所有人。master
和dev
代表分支
参考:
@admin = malun @om = malun bcd repo gitolite-admin RW+ = malun repo testing RW+ = @all repo om RW+ = @admin RW+ master = @admin RW+ dev = @om
- 应用修改到服务器端
配置
做好配置后,由管理员把修改push到服务器端,会自动处理。
$ git add conf
$ git add keydir
$ git commit -m "added foo, gave access to alice, bob, carol"
$ git push
此时登录服务端,查看/home/git/repositories/
目录下是否增加了对应的仓库了呢?
客户端必须先测试以添加host git clone git@sss.com:testing
对已有的本地git添加远程库名称:
git remote add nichen git@sss.com:mo
其他常用命令
git init
git add
配置 .gitignore文件
评论已关闭!