centos搭建git私有仓库
现在GitLab和GitHub现在都很成熟,大多数时候大家都会使用他们来当git仓库,但是有些时候公司为了代码安全问题,需要在本地创建git私有库来给大家使用,所以给公司搭了一个git私有库。
私有库环境
我们这里使用的环境是
- git version 2.21.0
- centos7
- centos ip 192.168.1.11
安装git 2.21.0
之所以选择git 2.21.0,是因为公司使用git windows的版本大多都是2.21.0,git私库的版本也选择了相同版本,git仓库和git客户端的版本最好还是相同比较好。
以下命令使用root用户执行。
- 打开git官网下载安装包
- 右键复制链接地址,打开centos下载到/tmp目录
wget -P /tmp https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.21.0.tar.gz
如果提示没有wget命令,安装wget
yum - install wget
- 解压git-2.21.0.tar.gz
tar -zxvf /tmp/git-2.21.0.tar.gz -C /tmp
- 安装依赖
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
- 删除旧版本git
yum remove -y git
- 编译安装
cd /tmp/git-2.21.0
make prefix=/usr/local/git all
make prefix=/usr/local/git install
- 配置环境变量
echo 'export GIT_HOME=/usr/local/git' >> /etc/bashrc
echo 'export PATH=$PATH:$GIT_HOME/bin' >> /etc/bashrc
source /etc/bashrc
注意环境变量放在 /etc/bashrc,不要放在 /etc/profile
- 查看git是否安装完成
git version
创建git仓库
- 创建用户
该命令使用root用户
useradd demo
passwd demo
#输入两次密码完成创建demo用户
- 切换至demo用户,在~/目录创建一个git目录作为git仓库
su demo
cd ~/
mkdir git
cd git
- 创建git仓库
git init --bare
- 客户端连接git私有库
该操作是在windows进行,假如使用TortoiseGit则使用TortoiseGit克隆
git clone demo@192.168.1.11:/home/demo/git
按照提示输入demo的密码即可。
git仓库安全配置
上文所示,访问git私库需要输入用户名密码,那么使用者就可以根据用户名和密码使用ssh远程到我们的git仓库服务,这是一件非常危险的事情,所以我们要禁止用户使用ssh远程服务器。
- 切换到root用户找到git-shell所在的位置
#退出demo用户,切换到root用户
exit
#查找git-shell所在位置
find / -name git-shell
# git-shell在我们安装的目录下
# /usr/local/git/bin/git-shell
- 配置/etc/passwd
vim /etc/passwd
里面会有一行以demo 开头,将末尾的/bin/bash修改成/usr/local/git/bin/git-shell
这时候客户端就不能使用ssh远程到192.168.1.11服务器了,而且不影响使用git。
当然这样做的话执行ssh-copy-id git@192.168.1.11提交公钥的时候也会提示找不到命令,
所以这时候需要root或者同组用户手动拷贝id_rsa.pub秘钥来实现免密操作了。