1、git安装
yum install -y git
2、创建git用户
adduser git
3、设置git用户登录方式 限于git-shell方式
vim /etc/passwd
修改内容:
git:x:1000:1000::/home/git:/bin/bash //原始
git:x:1000:1000::/home/git:/bin/git-shell //修改后
4、设置git用户目录权限(配置公钥无效很可能是没有做这一步)
cd /home/git //进入git目录
mkdir .ssh //创建.ssh文件夹
chmod 700 .ssh //只允许本用户和root用户拥有读、写、执行权限。
cd .ssh //进入.ssh目录
touch authorized_keys //用于添加公钥列表
chmod 600 authorized_keys //只允许本用户和root用户拥有读、写权限。
cd /home //返回home目录
chown -R git:git git // 将git文件夹的用户名和组名都改为git
5、客户端生成秘钥
客户端先安装git
ssh-keygen -t rsa -C "youremail@example.com"
一路回车之后会在用户文件夹中的.ssh文件夹中生成公钥和秘钥id_rsa 、id_rsa.pub 两个文件。
6、服务端添加公钥
将公钥id_ras.pub的内容复制到服务器的 /home/git/.ssh/authorized_keys中,如有多个公钥,一行添加一个。
注意:是/home/git目录下的.ssh,不是root下的。因为我们是用git用户来登录主机,所以要在git目录下配置。同理,如果使用root免密登录,则在root目录下的.ssh配置。
前车之鉴:之前我就因为一直在root下的.ssh/authorized_keys里面添加公钥,每次使用git命令都需要密码,后来才发现是这个问题。
7、设置免密登录,配置 ssh_config
vim /etc/ssh/ssh_config //编辑ssh配置文件
//去掉注释#
RSAAuthentication yes //启用 RSA 认证
PubkeyAuthentication yes //启用公钥认证
systemctl restart sshd //重启ssh
8、设置root免密登录方式
将之前的客户端的公钥再放到 root/.ssh/authorized_keys中就可以,原理同git的免密登录,登录的时候使用秘钥的登录方式。
9、建立git仓库目录
在home目录下新建一个gitrepo文件夹作为git仓库的储存室(位置根据自己选择)
cd /home
mkdir gitrepo //创建git仓库目录
chown git:git gitrepo //将此文件夹归为git用户所有
10、创建第一个git仓库
cd gitrepo
git init --bare test.git //创建一个裸仓库
chown -R git:git test.git //将仓库归为git所有
11、客户端拉取仓库内容
git clone git@公网ip:/home/gitrepo/test.git //ssh方式连接
结语:
整体看起来搭建git环境没有太大的复杂性,主要中间几个地方有一些坑,理清楚思路和找到坑的解决方案就好了。
思路:
1、安装git
2、设置git用户目录权限
3、客户端生成秘钥,服务器添加公钥
4、配置ssh_config
5、创建仓库,改变所有者
6、拉取代码