CentOS7下搭建git服务器

第一步:升级|安装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://mirrors.edge.kernel.org/pub/software/scm/git/git-2.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
————————————————
版权声明:本文为CSDN博主「JC. Lin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_31803503/article/details/85038395

你可能感兴趣的:(centos,git)