前言:作为目前世界上最先进的分布式版本控制系统,简单来说就是高端大气上档次! 代码托管仓库有两种类型。远程仓库和本地仓库;两者没啥不同,纯粹为了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仓库; 然后将Git仓库的owner修改为git 至此,git服务器搭建完成。然后我们在客户端使用git命令进行测试。
客户端 clone 远程仓库
git clone git@172.20.6.231:/home/data/git/gittest.git/ 此时提示要输入git用户的密码,输入密码后即可从git服务器端拉取远程代码仓库到本地。 ——————————————————————我是分割线—————————————
为了客户端能够更好的访问git仓库,因为我们使用ssh秘钥的形式远程访问Git服务器,在每次远程拉取git仓库时不需要输入密码,方便我们访问。 注:以下操作服务器端和客户端的操作均在root用户下操作,之前以为是git用户设置秘钥访问导致在git用户下创建秘钥文件访问不通。
服务器端: 开启sshd的RSD认证,打开sshd_config以下三个配置的注释: 重启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仓库配置完成。 客户端测试秘钥方式访问: 可以看到我们在客户端本地查看到一个gittest的目录。
最后: 禁止git用户ssh登录服务器 在服务器端编辑:/etc/passwd修改git的条目为: 此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统。