---
title: CentOS搭建Git服务器
date: 2018-06-08 13:08:00
tags: git
---
### 新增服务器管理员:git
>服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码
```bash
[root@vultr home]# id git
id: git:no such user # 没有此用户
[root@vultr home]# useradd git // 新增用户,用户名为git
[root@vultr home]# passwd git // 设置新用户git密码
```
### 初始化一个git仓库
```bash
[root@vultr home]# git init --bare home/git/project.git # 初始化一个仓库
[root@vultr git]# chown -R git:git project.git #设置仓库的管理员为git
# 第一个git表示用户组,第二个git表示用户组里面的git用户
```
* tips:到这里,服务器端的仓库就新建完了,就是这么简单
---
### 本地clone仓库
```bash
> git clone git@149.28.18.111:/home/git/project.git
> Cloning into 'project'...
> warning: You appear to have cloned an empty repository.
# 这样显示就表示克隆成功了
```
### 本地新建一个test.txt文件,push到服务器
```bash
>> git status
>> git add -a .
>> git commit -m 'test'
>> git push
git@149.28.18.111's password:
```
> push时会提醒你输入前面新建的git用户密码,输入后推送成功.输入密码时不可见
```bash
Counting objects: 3, done.
Writing objects: 100% (3/3), 204 bytes | 204.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To 149.28.18.111:/home/git/project.git
* [new branch] master -> master
```
### git服务器SSH验证,避免输入密码
git每一次push都需要输入密码显然很麻烦,除了密码的验证方式,还有ssh(公钥)验证方式。
#### 客户端新建一个ssh(公钥)
1. 设置Git的user name和email:
```bash
>> git config --global user.name "example"
>> git config --global user.email "example@qq.com"
```
2. 生成密钥
```bash
>> ssh-keygen -t rsa -C “example@qq.com”
```
3. 生成密钥成功后,公钥保存的目录
```bash
>> C:\Users\你电脑的用户名\.ssh
# 在这个目录下有2个文件 `id_rsa`和`id_rsa.pub`.其中id_rsa是你自己的私钥,本地保存即可,id_rsa.pub是公钥,需要上传到服务器
```
4. 服务器端,新建一个文件夹.ssh,一会儿用来存放公钥,目录为/home/git/.ssh
```bash
# 新建
[root@vultr git]# mkdir /home/git/.ssh
[root@vultr git]# cd /home/git
# 查看
[root@vultr git]# ls -a
# 出现 .ssh 则表示新建成功
. .. project.git .ssh
```
5. 即将成功了! 客户端,打开 `id_rsa.pub` 文件,复制内容到本地新建的 `authorized_keys` 文件内。 将 `authorized_keys` 文件上传到服务器,位置目录为 `/home/git/.ssh/authorized_keys`。也就是第4步用来存放公钥的文件夹
6. 测试是否成功!
本地的test.txt文件改动一下内容,再次提交,你会发现不用密码了.