第一步:升级|安装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