Git基础(一) 自建Git服务器(Centos)

本文详细介绍如何在Centos系统上自建Git服务器,包括安装Git、创建用户、生成密钥、复制公钥到服务器、配置RSA认证及初始化Git库等步骤。

系列文章目录

Git基础(一) 自建Git服务器(Centos)
Git基础(二) Git数据上传
Git基础(三) 代码合并
Git基础(四) 多用户支持



安装Git

  1. 开始安装
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum install git
yum install git
  1. 创建用户组和用户
    -g 用户所属组,-G 用户附加组
groupadd git 
useradd git -g git

创建服务器文件

  1. 服务器文件搭建
    主要是建立.ssh文件(主要存放公钥)
 cd /home/git/ 
 mkdir .ssh 
 chmod 755 .ssh 
 touch .ssh/authorized_key
 chmod 644 .ssh/authorized_keys

cd:进入文件夹–默认是root用户登录时,文件夹在root用户下,需要执行"cd …"到上一级
mkdir:创建.ssh文件夹,可以先用“ls -a” 查看所有文件夹,看是否存在,存在则不需要创建,直接进入即可
chmod: 权限指令 赋予对指定文件夹的访问权限
touch:在指定目录下创建文件夹,可以先用“ls -a” 查看所有文件夹,看是否存在,存在则不需要创建,直接进入即可

chmod权限指令:
755表示拥有者有读,写,执行权限,属组用户有读,执行权限
644表示只有拥有者有读写权限,属组用户有读权限
chmod详解

生成本地证书

主要是生成密钥&公钥
在这里插入图片描述
此时会生成两个文件
id_rsa:密钥文件
id_rsa.pub:公钥文件 放到服务器的

scp复制文件至服务器

scp  ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx:../home/git/.ssh/id_rsa.pub

将本地id_rsa.pub(公钥)复制到服务器
scp:使用scp方式
ip后面的是,git安装后authorized_keys的路径(服务器),如果是默认安装,一般在home/git/.ssh文件下。
PS:路径最前面两个逗号,是因为以root用户登陆时,一般默认的是root文件夹,需要往上一级找

设定连接远程服务器

  1. bash登录远程服务器
    以ssh指令 通过root用户登录服务器
ssh root@xxx.xxx.xxx.xxx
  1. 附加公钥数据至authorized_key
cat ~/../home/git/.ssh/id_rsa.pub >> ~/../home/git/.ssh/authorized_key

在服务器上,将id_rsa.pub 文件附加到authorized_key中

PS:此方法容易出错,主要是文件路径/名称错误。可以直接home/git/.ssh,直接执行附加命令即可($ cat id_rsa.pub >> authorized_key)

  1. 启用RSA认证
    启用RSA认证就可以允许客户端使用ssh访问了
//打开config文件内
vi /etc/ssh/sshd_config
//下面3个打开注释或添加
RSAAuthentication yes     
PubkeyAuthentication yes     
AuthorizedKeysFile  .ssh/authorized_keys

PS:一般PubKey是有的,另外两个可能要自己添加。输入i,进入下面框会提示insert,表示编辑状态
找到各自的注释(可以右键,搜索),并配置。输入完成后,按“esc”键,然后输入:wq表示保存并推出。
具体文件操作指令可以另查

初始化Git库

  • 创建git库:

首先我们选定一个目录作为Git仓库,假定是/home/gitrepo/test.git,在/home/gitrepo目录下输入命令:

cd /home 
mkdir gitrepo 
chown git:git gitrepo/ 
cd gitrepo 
 git init --bare test.git 

输入最后一行后会提示:“Initialized empty Git repository in /home/gitrepo/test.git/”

  • chown是指将该文件夹的管理员给git用户

  • 更改文件的管理用户(一般git init时,都要执行该语句)

$ chown -R git:git test.git
  • 克隆仓库至本地
    在指定文件夹下,通过git bash进入到控制台,并执行以下指令
git clone git@XX.XX.XX.XX:/home/gitrepo/test.git

此处会提示
Cloning into ‘runoob’…
warning: You appear to have cloned an empty repository.
Checking connectivity… done.

此处需要输入服务器密码

值得注意的是,如果本地私钥和服务器公钥对不上,是会提示访问被拒绝的(Permission denied, please try again)

异常

Permission deny的可能有两种:
第一:
没有将本地的id_rsa.pub的public key(公钥)附加至服务器的authorized_key,此时做cat操作即可

第二
执行git clone时,当前git用户没有足够的权限,此时可以使用root用户试一下(git clone root@XXX.XXX.XXX.XX:/home/gitrepo/test.git),如果可以,说明当前用户权限不够。

而权限不够,分为两种
1.文件夹权限不够
需要重新设置仓库文件夹的访问权限—见“初始化git仓库”

chown git:git gitrepo/ 
$ chown -R git:git test.git

2.git用户不能通过ssh方式登录远程服务器
此时需要配置sshd_config文件,

//git服务器打开RSA认证
vi /etc/ssh/sshd_config
//下面3个打开注释或添加
RSAAuthentication yes     
PubkeyAuthentication yes     
AuthorizedKeysFile  .ssh/authorized_keys

config文件找起来难,可以右键查询

第三
当前用户的密码输入不正确

Could not read from remote repository:
异常详细:
fatal: ‘…/home/git/repo/runoob.git’ does not appear to be a git repository
fatal: Could not read from remote repository

此种情况下大概率是路径错了。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值