1.检查是否已经安装
whereis git
2.到官网下载git的tar.gz包
cd /usr/local/tmp
wget https://github.com/git/git/archive/v2.28.0.tar.gz
tar -zxvf v2.28.0.tar.gz
mv git-2.28.0 /usr/local/git-2.28.0
3.编译安装
#先安装git依赖
yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc
cd /usr/local/git-2.28.0
./configure
make
make install
4.安装完成后,验证是否安装成功
git --version
5.创建git用户,并禁用其登录
useradd git
passwd git
# 执行这个命令查出git-shell的路径
whereis git-shell
# 编辑密码文件,修改git用户
vim /etc/passwd
# 修改成这个样子
git:x:1001:1002::/home/git:/usr/local/bin/git-shell
6.创建仓库
mkdir /usr/local/repository
mkdir /usr/local/repository/spring.git
cd /usr/local/repository/spring.git
git init --bare
chown -R git:git /usr/local/repository
# 这是客户端clone的地址
git clone git@192.168.152.129:/usr/local/repository/spring.git
7.开启服务器RSA认证,配置公钥
vim /etc/ssh/sshd_config
# 把这三个注释打开
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 重启sshd服务
systemctl restart sshd.service
# 到git目录查看有没有.ssh文件夹,没有就创建
cd /home/git
ll -a
mkdir .ssh
chown -R git:git .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
chown -R git:git .ssh
8.在客户端用putty生成公钥,然后复制到authorized_keys
9.客户端连接到服务端
10.安装售后服务
一、如果客户端连接一直提示输入密码,怎么办?
# 遇到提示输入密码不要着急,先看下服务器的登录日志
cat /var/log/secure
# 如果遇到下面这个日志,说明git-shell的路径没对
User git not allowed because shell /usr/bin/git-shell does not exist
input_userauth_request: invalid user git [preauth]
# 查看git-shell的路径
whereis git-shell
# 修改passwd
vim /etc/passwd
二、如果没有上面的日志,但是还提示输入密码,那可能就是.ssh目录和.ssh/authorized_keys的权限问题,按照下面操作可解决
cd /home/git
chown -R git:git .ssh
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
三、如果push出现:insufficient permission for adding an object to repository database .git/objects
vim /etc/selinux/config
SELINUX=enforcing 修改为SELINUX=disable,然后reboot