Linux(CentOS)搭建git服务端

本次环境:
  • CentOS Linux release 7.2.1511
  • Git 1.8.3.1

1.查看是否已安装git

$ rpm -qa git

若已安装,可以用yum remove git 删除。

2.yum安装git

$ yum install -y git

安装成功,查看git版本信息:

$ git --version

3.添加git用户,运行git服务

$ groupadd git
$ adduser git -g git

4.创建ssh认证文件authorized_keys并设置权限

authorized_keys用于存放客户端的ssh key,利用SSH的公钥来完成验证,避免git clone时输入密码。

$ cd /home/git
$ mkdir .ssh
$ chmod 700 .ssh
$ touch .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ cd /home
$ chown -R git:git git

5.Git服务器打开RSA认证

编辑sshd_config文件

$ vi /etc/ssh/sshd_config

如下三项:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile   .ssh/authorized_keys

可以看到认证公钥目录正是上面我们创建的/home/git/.ssh/authorized_keys。

6.客户端创建ssh key并保存至服务端authorized_keys文件

(a)windows系统

打开Git Gui,“帮助”—“Show SSH Key”,将id_rsa.pub公钥中的内容保存至服务端authorized_keys文件(多个客户端,每个key一行)。

这里写图片描述

这里写图片描述

$ vi /home/git/.ssh/authorized_keys

编辑后保存。

(b)MacOS系统

安装git步骤略。
……
创建一个全球用户名、全球邮箱:

$ git config --global user.name "username"
$ git config --global user.email "youremail@example.com"

cd ~进入根目录
输入命令ssh-keygen生成ssh-key,如果有提示,一直按回车

$ ssh-keygen

这里写图片描述

提示已经生成rsa文件到指定目录。
同样,查看id_rsa.pub公钥中的内容,并保存至服务端authorized_keys文件。

7.创建git仓库

为了方便,我们把仓库也放入home目录。
给予git权限。

$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo

初始化该仓库

$ cd gitrepo/
$ git init --bare test_repo.git

提示:初始化空的 Git 版本库于 /home/gitrepo/test_repo.git/。

给予git权限:

$ chown -R git:git test_repo.git

注意:以后每创建一个新的仓库,都要执行这步操作: 修改仓库所属用户为git

8.git clone

现在尝试用git clone刚才新建的test_repo项目:

D:\gitGetTest>git clone git@106.14.224.204:/home/gitrepo/test_repo.git

第一次clone会提示:

The authenticity of host 'xx.xx.xx.xx' can't be established.
ECDSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

输入yes回车即可,后面不会再提示。

这里写图片描述

可以看到,test_repo项目已经clone至客户端。

9.禁用git用户的shell登录

出于安全考虑,禁止git用户的shell登录,通过编辑/etc/passwd文件完成。

$ vi /etc/passwd

修改
git:x:1000:1001::/home/git:/bin/bash

git:x:1000:1001::/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell。

综上,git服务端已经搭建完毕。

10.一些命令

1.查看系统用户组

$ cut -d: -f1 /etc/group

-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;

2.查看系统用户

$ cut -d: -f1 /etc/passwd

3.clone仓库

$ git clone git@gitServer_ip:/home/gitrepo/sample.git

4.push已有仓库

// 以master分支示范
$ git checkout master
$ git remote rm origin
$ git remote add origin git@gitServer_ip:/home/gitrepo/sample.git
$ git push -u origin master
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值