CentOS7.3搭建git私有服务器完整版加踩坑记

之前搭建过一次git服务器,一直自己在用,没去详细了解git的用户登录的思路,配置了ssh但无密码登录一直不成功;最近有小伙伴要加入git使用,再次实际搭建过程中,终于又往前理解了一步,无密码ssh登录成功。分享下步骤和思路,不正确的地方还请批评指正。

  1. 安装依赖包:
	yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker vim
	
  1. 官网下载最新版源文件:
	wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.30.0.tar.gz
  1. 解压、编译、安装 :
	tar -zxvf git-2.30.0.tar.gz
	cd git-2.30.0
	./configure --prefix=/usr/local/git
	make
	make install
  1. 查看git版本:
	git --version
如果有老的版本,比如git version 1.8.3.1,需要移除掉
	yum remove git
  1. 配置环境变量
	vim /etc/profile

打开的文件中最后添加如下代码

	# GIT_HOME
	GIT_HOME=/usr/local/git
	export PATH=$PATH:$GIT_HOME/bin

刷新环境变量

	source /etc/profile
  1. 再次查看git的版本
	git --version

一切顺利的话会看到: git version 2.30.0

  1. 接下来其实有两种方案去操作

方案一:(网上找到的大部分搭建git服务器的方法)新建一个“git”账户,算了,我讨厌这个账号,因为不好理解,那么随便叫什么名字都好,比如 “zhangsan” ,大家都试用zhangsan用户名操作

(1)新建用户zhangsan,并设置密码
	useradd zhangsan
	passwd zhangsan

假设另外有普通登录维护账号“lisi”,把"zhangsasn"和"lisi"账户都加入到"gitgroup"组; zhangsan只能登录git服务器使用, lisi可以登录CentOS.

(2)在 /home/zhangsan张三的家目录下新建".ssh"目录,在.ssh目录新建"authorized_keys"文件,新建用户组"gitgroup",zhangsan和lisi都加入gitgroup用户组
cd /home/zhangsan
mkdir .ssh
cd .ssh
touch authorized_keys
groupadd gitgroup
usermod -G gitgroup zhangsan
usermod -G gitgroup lisi
(3)让gitgroup组都能访问git的文件放置目录,比如 /home/git-server 目录, 更改所有者zhangsan,让zhangsan和gitgroup用户群组里面的都有读写权限
cd /home
mkdir git-server
chmod -R 774 /home/git-server/
chown -R zhangsan:gitgroup /home/git-server
(4)在Git Bash客户端(我的客户端是windows系统)生成秘钥,运行ssh-keygen这行命令时候,直接3个回车;windows为例,在C:\Users\用户名.ssh目录下,会生成id_rsa和id_rsa.pub两个文件,拷贝id_rsa.pub文件上传到服务器
git config --global user.name "zhangsan"
git config --global user.email "[email protected]"
ssh-keygen -t rsa -C "first_client"
(5)回到服务器,修改.ssh和authorized_keys文件权限和所有者,将公钥id_rsa.pub拷贝到/home/zhangsan目录下,如果有多个,分次添加即可,也可以一行一个公钥复制到authorized_keys中
chmod 700 /home/zhangsan/.ssh
chmod 600 /home/zhangsan/.ssh/authorized_keys
cd /home/zhangsan/
chown zhangsan:gitgroup .ssh
chown zhangsan:gitgroup .ssh/authorized_keys
cat id_rsa.pub >> .ssh/authorized_keys
(6)修改ssh配置文件
vim /etc/ssh/sshd_config
上面文件中修改一下三行
	RSAAuthentication yes
	PubkeyAuthentication yes
	GSSAPIAuthentication yes
然后重启sshd
systemctl restart sshd.service
(7)在服务器初始化仓库
cd /home/git-server/
git init --bare test.git
(8)修改/etc/passwd文件
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
修改为
zhangsan:x:1001:1001::/home/zhangsan:/usr/local/git/bin/git-shell
然后重启sshd
systemctl restart sshd.service
(9)假设端口号为8888,在所有客户端都试用zhangsan的用户名操作
git clone ssh://zhangsan@IP:8888/home/git-server/test.git
  1. 方案二: 每个客户端使用自己的用户名(具体操作参考zhangsan用户的操作),所有添加的用户名都加入gitgroup用户组,自己使用的用户名的公钥都拷贝到自己的家目录下的.ssh下的文件中,具体不再赘述.

克隆的时候,使用自己的用户名登录

git clone ssh://用户名@IP:8888/home/git-server/test.git

你可能感兴趣的:(git,ssh,centos,运维开发,运维)