Git作为目前最先进的版本控制系统,基本上在日常的开发中已经离不开了。所以下面记录一下小团队使用自己内部的git服务器,进行多人协作开发。
安装Git
安装git是非常简单的,在CentOS上只需要执行下面的命令
yum install git -y
而如果是Ubuntu上可以使用下面的命令
apt-get install git -y
创建Git用户
接着我们创建一个git用户来作为拉取代码时指定的用户
useradd git
这样默认就会在/home
下生成一个以git
为名字的目录。
配置秘钥认证
在我们拉取代码的过程中对于每次都输入密码来进行认证是很繁琐的一件事情。尽管可以把密码写在git的配置文件中,但这不是真正的免密码登录。所以使用密钥对来进行用户认证
首先我们在自己的开发机上生成一下公钥和私钥
ssh-keygen -t rsa -C "ooxx@qq.com"
然后一路回车。不出意外会在当前用户的家目录下的.ssh
目录下生成一组密钥对,分别是id_rsa
和id_rsa.pub
前者为私钥后者为公钥。我们要做的就是把公钥的内容发送到git服务器中,然后我们在拉取代码的时候进行系统会自动进行秘钥对验证。
ssh-copy-id -i .ssh/id_rsa.pub git@gitserver
这时本地开发机的公钥就被自动发送到/home/git/.ssh/authorized_keys
文件中。如果你的机器上没有ssh-copy-id
这个命令,那么自己手动复制公钥内容,然后追加到authorized_keys
文件中吧。
这里需要注意,需要把.ssh
目录的权限修改为700
以及authorized_keys
权限修改为600
用户及所属组为git不然会出现拉取提示权限不正确的提示
禁用git用户系统登录
出于安全考虑,创建的git用户是不允许登录shell,这可以通过编辑/etc/passwd
文件完成
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
创建仓库
mkdir /srv/git
cd /srv/git
git init --bare laravel.git
执行上述命令后会在/srv/git
下生成一个laravel.git
的目录,这就是我们的项目共享仓库。—bare
就是代表创建一个裸仓库也就是不包含.git
的目录。最后设置一下仓库的所有者为git
chown -R git.git laravel.git
拉取仓库代码
到目前为止,git服务器端的配置就已经配置完毕了。现在我们回到开发机器,执行下面命令拉取代码
git clone git@gitserver:/srv/git/laravel.git
错误提示
新建一个文件/home/git/git-shell-commands/no-interactive-login
其内容如下
#!/bin/sh
printf '%s\n' "Hi $USER! You've successfully authenticated, but I do not provide interactive shell access."
exit 128
chmod +x no-interactive-login
https://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E9%85%8D%E7%BD%AE%E6%9C%8D%E5%8A%A1%E5%99%A8