系列文章目录
Git基础(一) 自建Git服务器(Centos)
Git基础(二) Git数据上传
Git基础(三) 代码合并
Git基础(四) 多用户支持
安装Git
- 开始安装
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum install git
yum install git
- 创建用户组和用户
-g 用户所属组,-G 用户附加组
groupadd git
useradd git -g git
创建服务器文件
- 服务器文件搭建
主要是建立.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文件夹,需要往上一级找
设定连接远程服务器
- bash登录远程服务器
以ssh指令 通过root用户登录服务器
ssh root@xxx.xxx.xxx.xxx
- 附加公钥数据至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)
- 启用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
此种情况下大概率是路径错了。。。

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





