最详细的CentOS7下搭建git服务器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31803503/article/details/85038395

第一步:升级|安装git最新版

1. 查看 yum 源仓库的 Git 信息:

yum into git

可以看出,截至目前,yum 源仓库中最新的 Git 版本才 1.8.3.1,而查看最新的 Git 发布版本,已经 2.9.2 了。

2. 依赖库安装

# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
# yum install gcc perl-ExtUtils-MakeMaker

3. 卸载低版本的 Git

通过命令:git –-version 查看系统带的版本,Git 版本是: 1.8.3.1,所以先要卸载低版本的 Git,命令:

# yum remove git

4. 下载新版的 Git 源码包(我放的了  /usr/local/git 的目录下了,git是我自己mkdir的目录)

进入/usr/local

cd /usr/local

新建git目录

mkdir git 
cd git 

在线下载最新的源码包

wget https://github.com/git/git/archive/v2.9.2.tar.gz

5. 解压当前目录

tar -xzvf v2.9.2.tar.gz

6. 安装 Git

分别执行以下命令进行编译安装,编译过程可能比较漫长,请耐心等待完成

cd git-2.9.2
make prefix=/usr/local/git all
make prefix=/usr/local/git install

7. 添加到环境变量

vim /etc/profile 

#如果没有vim,则安装vim工具   yum install vim

添加这一条:   export PATH="/usr/local/git/bin:$PATH" 

source /etc/profile   #是配置立即生效

8. 查看版本号

git --version

第二步,创建一个git用户组和用户,用来运行git服务(git服务端)

groupadd git
useradd git -g git
passwd git  #参数是用户名

最好切换到git用户 不然后面新建的git仓库都要改权限 烦烦烦!!

su - git 

创建用于收集所有需要登录的用户公钥文件

cd /home/git/
mkdir .ssh      #创建文件夹
chmod 700 .ssh
touch .ssh/authorized_keys   #创建用于收集所有需要登录的用户公钥文件
chmod 600 .ssh/authorized_keys

(注意:搭建到后面测试的时候,一定确保 authorized_keys 文件权限一定是 600 不然后面会重复提示输入密码)

第三步,创建证书,免密码登录(git客户端)

收集所有需要登录的用户的公钥(id_rsa.pub)文件,把所有公钥导入到/home/git/.ssh/authorized_keys 文件内,一行一个。

1.检查本地是否已经配置了SSH KEY 

window:

右键 -> Git Bash  并执行指令如下

ls -al ~/.ssh (‘~’ 是指当前用户所在目录,例如:"C:\Users\LWD")

其他操作系统:

在终端上敲

ls -al ~/.ssh (‘~’ 是指当前用户所在目录,例如:"/home/git")

-如果有配过,会列出:

 id_rsa (私钥)

 id_rsa.pub(公钥)

 这是一个公钥与私钥对    

 -如果没有配过(或者根本就没有.ssh目录),我们可以通过 ssh-keygen 程序来创建它们,那么就进入第二步,新建一个新的SSH KEY

2.新建一个新的SSH KEY (git客户端)

#邮箱可以随便填

ssh-keygen -t rsa -C "[email protected]"

首先 ssh-keygen 会确认密钥的存储位置和文件名(默认是 .ssh/id_rsa),然后他会要求你输入两次密钥口令,留空即可。所以一般选用默认,全部回车即可。

整个过程大概:

 3.将id_rsa.pub公钥中的内容添加到Git仓库设置中

1)进入目录C:\Users\uestc\.ssh

2)把id_rsa.pub文件上传到 git服务器 路径 "/tmp/id_rsa.pub"

3)在git服务器上执行命令

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

4.Git服务器打开RSA认证 

在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开

root用户操作

vim /etc/ssh/sshd_config

添加这三项,(注释掉的打开注释,没有的要手动敲

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile ~/.ssh/authorized_keys

第四步,初始化Git仓库(git服务端)

cd /home/git
git init --bare test.git

以上命令会创建一个空仓库,服务器上的Git仓库通常都以.git结尾。

第五步、本地克隆仓库(git客户端)

$ git clone git@your-ip:/home/git/test.git #例如 git clone [email protected]:/home/git/test.git

Cloning into 'test'...

warning: You appear to have cloned an empty repository.

Checking connectivity... done.

your-ip 为您 Git 所在服务器 ip 

问题来了

本来根据文档,根据广大猿友的经验,我的搭建之路已经完成了,然后最后一步出现了问题。每次跟服务器进行交互(clone,pull,push),都让我输入git的密码,也就是说,我配置的ssh没有生效。然后就开始到处找原因,重新生成rsa,提升authorized_keys权限,重新创建服务器git账户,重新。。。。。

翻遍了 Stack Overflow 和 segmentfault ,两个小时过去了,问题仍然没有进展,这么简单的东西,问题到底出在哪里。

就在心灰意冷,准备放弃的时候,不知道是哪里来的灵感,准备把 authorized_keys 文件的其他用户的权限删掉,然后就能用了,后就能用了,就能用了,能用了,用了,了~~~~,命令如下,不想多说话,我想静静。

chmod 600 authorized_keys

第六步、禁止Shell登录

出于安全考虑,git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。

找到类似下面的一行:

git:x:502:502::/home/git:/bin/bash

改为

git:x:502:502::/home/git:/usr/local/git/bin/git-shell

CentOs 重启ssh服务的命令如下:

service sshd restart

参考文档:

centos7下git服务器端搭建 https://blog.csdn.net/permanent_2008/article/details/73839315

Git之SSH与HTTPS免密码配置 https://www.jianshu.com/p/b5ec092fc1d1

手把手教你搭建git服务器  https://www.jianshu.com/p/0c939f63af41

git教程  https://git-scm.com/book/zh/v2/

喜欢我的朋友可以在微信公众号上关注我:

猜你喜欢

转载自blog.csdn.net/qq_31803503/article/details/85038395