远程仓库|CentOS8搭建github客户端与服务端与远程库客户端

搭建Git客户端 配置github远程库 1安装OpenSSH 查看是否有安装OpenSSH
ssh -V (* V大写)
如出现下面的内容则表示已安装了OpenSSH。
远程仓库|CentOS8搭建github客户端与服务端与远程库客户端
文章图片

2安装依赖包 执行命令

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

3安装git 切换到root账号
$ su root

创建目录usr/local/git文件夹
下载2.9.2版本的安装包
wget https://github.com/git/git/archive/v2.9.2.tar.gz

解包
tar -xzvf v2.9.2.tar.gz

编译安装
make prefix=/usr/local/git all make prefix=/usr/local/git install

环境变量设置
vim /etc/profile

profile配置文件中加入下面的设置
export PATH="/usr/local/git/bin:$PATH"

使profile文件更改生效
source /etc/profile

查看版本号 安装是否成功
git --version
远程仓库|CentOS8搭建github客户端与服务端与远程库客户端
文章图片

将git设置为默认路径(创建快捷方式),不然后面克隆时会报错
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack

创建一个git用户组和用户,用来运行git服务
groupadd git useradd git -g git passwd git#参数是用户名 su - git//切换git用户

【注】最好切换到git用户 不然后面新建的git仓库都要改权限
至此,git服务安装完成!
4创建证书登录 Git服务器打开RSA认证 。在Git服务器上首先需要将/etc/ssh/sshd_config中的RSA认证打开,即将sshd_config文件中下面几个的注释解开:
1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile .ssh/authorized_keys
记得这个要用root账户修改配置,修改后切换会git账户
CentOS7.3以上可以不用修改上面的设置,7.3或之前的版本需要修改。
具体可以参考
https://www.cnblogs.com/Leroscox/p/9627809.html
公钥存放在.ssh/authorized_keys文件中。
所以我们在/home/git下创建.ssh目录,然后创建authorized_keys文件,
cd /home/git/ mkdir .ssh #新建文件夹 chmod 700 .ssh touch .ssh/authorized_keys#新建文件 chmod 600 .ssh/authorized_keys

生成密钥
1.设置用户名和邮箱
git config --global user.name ‘用户名’
git config --global user.email ‘邮箱地址’
2.创建新的ssh keys
ssh-keygen -t rsa -C “邮箱”
第一个输入直接回车,第2个和第3个输入密码
3.
打开/home/git/.ssh/id_rsa.pub文件,复制里面的公钥内容(全选)
登录github,在SSH and GPG keys选项卡中点击New SSH key,将复制的内容粘贴,标题随便起
4.执行
eval 'ssh-agent -s'

切换root账号,执行
ssh-add ~/.ssh/authorized_keys ssh-add -l//查看到当前计算机中存储的密钥 ( 是字母l 不是数字1) ssh -T git@github.com

如果出现
Hi XXXX! You’ve successfully authenticated, but GitHub does not provide shell access.表明git服务搭建成功!
这个时候如果去git clone代码,会让你输入密码,如果一个还好说,如果关联了很多的话,那就比较麻烦了,这个时候的解决方法就是添加到keychain中:
ssh-add -K /Users/youre_user_name/.ssh/id_rsa

如果出现
Could not open a connection to your authentication agent.
使用一下命令解决
ssh-agent bash

资料参考列表
https://blog.csdn.net/w252064/article/details/82691343
https://www.cnblogs.com/fly_dragon/p/8718614.html
https://www.jianshu.com/p/eb742fe78b93
搭建服务端 按上面安装好Git
1.新建git仓库主目录
mkdir -p /data/gitrepos
2.建立git用户
useradd 账户名
passwd 账户名 输入密码
3.设置仓库所有者权限,赋予nobody就是把权限给了所有人
chown -R nobody:nobody /data/gitrepos
4.设置仓库的操作权限,755 读写权限,如权限不够会导致无法提交
chmod -R 755 /data
5.修改用户shell登陆权限(禁止客户端shell登录)vi /etc/passwd 找到最后头的帐号,把冒号后面的/bin/bash改成/usr/local/git/bin/git-shell,就是你的git安装目录下的/bin/git-shell,然后保存退出。
修改后使用shell远程会发现该账户已无法登录shell
远程仓库|CentOS8搭建github客户端与服务端与远程库客户端
文章图片

远程登录客户端可参考
https://blog.csdn.net/weixin_44582944/article/details/106825027
验证git服务器 1.linux git服务器创建裸仓库目录 创建裸仓库目录,test为项目名
mkdir -p /data/gitrepos/test
2.linux git服务器创建裸仓库 ,git服务器初始化仓库的时候一定要加上–bare,否则你的仓库不能推送代码,test为项目名;
git init --bare /data/gitrepos/test/test.git
3.linux git服务器修改git仓库的读写权限,这样子git仓库就能读写了,否则会报错拒绝提交的,如果push出错有可能这里的权限问题;
chmod -R 777 /data/gitrepos/test
4.在window安装git客户端,打开git bash切换到指定目录,输入git clone zhangsan@服务器IP:/data/gitrepos/test/test.git【PS:如git clone zhangsan@192.168.0.119:/data/gitrepos/test/test.git】,
【远程仓库|CentOS8搭建github客户端与服务端与远程库客户端】然后按照提示输入密码就能clone项目;【PS:设置了SSH公钥免密码登录则不需要输入密码】
5.在window然后增加个readme.txt或者其他文件,然后随意添加文字内容,然后在git bash切换到test目录,执行git add readme.txt, git commit -m"新增readme文件", git push -u origin master,就看执行push以后是否成功就行了。
参考
https://www.cnblogs.com/-mrl/p/11050860.html
客户端设置 我使用的windows客户端,安装git客户端后
1、生成证书 ,客户端执行
git config --global user.name ‘账户名’ git config --global user.email ‘邮箱’ ssh-keygen -t rsa -C "邮箱"

也可以使用Git Gui客户端生成
打开C:/users/用户名/.ssh目录下找到id_rsa.pub 复制里面的内容
2.将客户端证书导入到服务端
mkdir -p /home/用户/.ssh cd /home/用户/.ssh vi authorized_keys#粘贴刚复制的内容

之后就可以正常使用远程库了
例如
git clone 用户@远程库ip:/data/gitrepose/test/test.git
如果 提示 你克隆了一个空库 ,可能是权限的问题,检查下远程库文件夹对其他用户有没有写入权限。
参考
https://www.cnblogs.com/-mrl/p/11050860.html
分支
自己本地创建的分支 push上去别人是看不到的,需要在远程库先
git branch 分支名
新建分支,这样其他人就都能看到这个分支了

    推荐阅读