樂猪先生

Linux简易安装Git服务器

2017-08-03

Git作为目前最先进的版本控制系统,基本上在日常的开发中已经离不开了。所以下面记录一下小团队使用自己内部的git服务器,进行多人协作开发。

安装Git

安装git是非常简单的,在CentOS上只需要执行下面的命令

1
yum install git -y

而如果是Ubuntu上可以使用下面的命令

1
apt-get install git -y

创建Git用户

接着我们创建一个git用户来作为拉取代码时指定的用户

1
useradd git

这样默认就会在/home下生成一个以git为名字的目录。

配置秘钥认证

在我们拉取代码的过程中对于每次都输入密码来进行认证是很繁琐的一件事情。尽管可以把密码写在git的配置文件中,但这不是真正的免密码登录。所以使用密钥对来进行用户认证

首先我们在自己的开发机上生成一下公钥和私钥

1
ssh-keygen -t rsa -C "ooxx@qq.com"

然后一路回车。不出意外会在当前用户的家目录下的.ssh目录下生成一组密钥对,分别是id_rsaid_rsa.pub 前者为私钥后者为公钥。我们要做的就是把公钥的内容发送到git服务器中,然后我们在拉取代码的时候进行系统会自动进行秘钥对验证。

1
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文件完成

1
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

创建仓库

1
2
3
mkdir /srv/git
cd /srv/git
git init --bare laravel.git

执行上述命令后会在/srv/git下生成一个laravel.git的目录,这就是我们的项目共享仓库。—bare就是代表创建一个裸仓库也就是不包含.git的目录。最后设置一下仓库的所有者为git

1
chown -R git.git laravel.git

拉取仓库代码

到目前为止,git服务器端的配置就已经配置完毕了。现在我们回到开发机器,执行下面命令拉取代码

1
git clone git@gitserver:/srv/git/laravel.git

错误提示

新建一个文件/home/git/git-shell-commands/no-interactive-login其内容如下

1
2
3
#!/bin/sh
printf '%s\n' "Hi $USER! You've successfully authenticated, but I do not provide interactive shell access."
exit 128
1
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