centos上搭建GIT服务器

前言:作为目前世界上最先进的分布式版本控制系统,简单来说就是高端大气上档次!
代码托管仓库有两种类型。远程仓库和本地仓库;两者没啥不同,纯粹为了7*24小时开机并交换大家的修改。
GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。

相关git的具体介绍,有兴趣的同学可以去搜索“廖雪峰”。廖雪峰老师将git很全面的讲解了一遍,并且从中可以根据实际的操作命令能够更好的理解git。
链接地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
正文:
实验环境:
centos7:172.20.6.231 #作为git的服务器端
centos7:172.20.2.240 #作为git客户端

一般来说服务器内部都有git这个命令。如果显版本低,可以自行升级。本地实验使用的是服务器内部自带的git。

服务端操作:172.20.6.231
1、创建git用户 #用来管理GIT服务,并为git用户设置密码;useradd git && passwd git
2、服务器端设置Git仓库
设置/home/data/git/gittest.git为Git仓库;
centos上搭建GIT服务器
然后将Git仓库的owner修改为git
centos上搭建GIT服务器
至此,git服务器搭建完成。然后我们在客户端使用git命令进行测试。

客户端 clone 远程仓库

git clone [email protected]:/home/data/git/gittest.git/
此时提示要输入git用户的密码,输入密码后即可从git服务器端拉取远程代码仓库到本地。
——————————————————————我是分割线—————————————

为了客户端能够更好的访问git仓库,因为我们使用ssh秘钥的形式远程访问Git服务器,在每次远程拉取git仓库时不需要输入密码,方便我们访问。
注:以下操作服务器端和客户端的操作均在root用户下操作,之前以为是git用户设置秘钥访问导致在git用户下创建秘钥文件访问不通。

服务器端:
开启sshd的RSD认证,打开sshd_config以下三个配置的注释:
centos上搭建GIT服务器
重启sshd服务。systemctl restart sshd

由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git,所以实际存放公钥的路径是 /home/git/.ssh/authorized_keys

在 /home/git/ 下创建目录 .ssh(目录权限700,owner为git)
修改把 .ssh 文件夹的 owner 为 git (确保.ssh目录下所有文件的owner都属于git,否则可能会导致认证失败,无法获取git远程仓库)
在.ssh目录下创建authorized_keys文件(文件权限600,owner为git)
修改 .ssh 目录的权限为 700
修改 .ssh/authorized_keys 文件的权限为 600

客户端:
root用户下创建秘钥文件
ssh-keggen
将.ssh下的公钥文件内容填写至服务器端:/home/git/.ssh/authorized_keys文件内。如果有多个客户端,可以将多个客户端的公钥文件写入到/home/git/.ssh/authorized_keys文件内。

此时秘钥访问git仓库配置完成。
客户端测试秘钥方式访问:
centos上搭建GIT服务器
可以看到我们在客户端本地查看到一个gittest的目录。

最后:
禁止git用户ssh登录服务器
在服务器端编辑:/etc/passwd修改git的条目为:
centos上搭建GIT服务器
此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统。

猜你喜欢

转载自blog.51cto.com/12476193/2333313