一、安装Git
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
yum install git
二、创建Git用户组和用户
用来运行Git服务
groupadd git
adduser git -g git
三、创建证书登录
服务器中存储所有登录用户公钥的文件,该文件位于/home/git/.ssh/authorized_keys
若没有则创建它:
cd /home/git/ mkdir .ssh chmod 700 .ssh touch .ssh/authorized_keys chmod 600 .ssh/authorized_keys
需要登录用户的公钥,位于客户端的id_rsa.pub文件中,如/Users/hanshaobo/.ssh/id_rsa.pub
将该用户的公钥存入git服务器端的authorized_keys文件中。
四、初始化git仓库
cd /home mkdir gitrepo chown git:git gitrepo/ cd gitrepo git init --bare myproject.git
创建成功则提示:
Initialized empty Git repository in /home/gitrepo/myproject.git/
把仓库所属用户改为git:
chown -R git:git myproject.git
五、克隆仓库
客户端进入项目所在目录中
git clone git@服务器ip:/home/gitrepo/myproject.git
六、禁止Git用户通过shell登录
vim打开/etc/passwd文件
将git:x:503:503::/home/git:/bin/bash改为git:x:503:503::/home/git:/bin/nologin
现在客户端可以通过 git clone 命令克隆远程仓库了,注意这里有些问题需要注意,SSH对公钥,私钥的权限和所有权的要求是非常严格的,总结如下:
1,下面两个目录的所有权必须是git(上面创建的git用户),所属组也应该是git,权限必须为700
①/home/git # chmod 700 /home/git
②/home/git/.ssh # chmod 700 /home/git/.ssh
2,公钥文件的所有权必须是git,所属组也必须是git,权限必须是644
①/home/git/.ssh/authorized_keys #c hmod 644/home/git/.ssh/authorized_keys
如果权限不对,会造成不能正常登录,报错信息:Permission denied (publickey,gssapi-with-mic.....)