Git服务器搭建与使用

Git服务器搭建与使用Git 服务器搭建与使用 Git 服务器搭建与使用 1 http o9knzde3g bkt clouddn com Git E6 9C 8D E5 8A A1 E5 99 A8 E6 90 AD E5 BB BA E4 B8 8E E4 BD BF E7 94 A81 png 前言 gt Git 是一个开源的分布式版本控制系统 可以有效 高速的处理从很小到非常大的项目版本管理

# Git服务器搭建与使用


![Git服务器搭建与使用1](http://o9knzde3g.bkt.clouddn.com/Git%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA%E4%B8%8E%E4%BD%BF%E7%94%A81.png)




## 前言
>**Git**是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。官网请戳[https://www.git-scm.com](https://www.git-scm.com)。
常用的有几家Git服务提供商
- [GitHub](https://www.github.com),全球最大的代(tong)码(xing)托(jiao)管(you)平台,社区文化好,大牛多,公有库免费,私有库收费
- [Gitee](https://www.gitee.com/),OSChina家的产品,现在国内挺多人用的,公有库、私有库都免费
- [Coding](https://www.coding.net/),公有库、私有库都免费,提供企业版(收费)服务,除了提供代码托管服务,还能发布任务,有点像是Gitee和Tower的结合体


## 环境准备
- 服务器,使用[阿里云](https://www.aliyun.com/),操作系统,`CentOS 7`
- 客户端,安装Git Client,参考官网的[安装指引](https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git)


## 1 安装Git
```
yum install git
```


## 2 配置用户
创建一个用户git,该用户只是用来进行git相关操作
```
groupadd git
useradd git -d /home/git -g git
```




## 3 Git-协议
>Git 可以使用四种协议来传输数据:本地协议(Local)、HTTP协议、SSH(Secure Shell)协议、Git 协议。各种协议的优劣详见[这里](https://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E5%8D%8F%E8%AE%AE)
### 3.1 SSH协议
查看公钥鉴权文件是否存在
```
cat /home/git/.ssh/authorized_keys
```
如果不存在的话,新建一个
```
cd /home/git/
mkdir .ssh
chmod 755 .ssh
touch .ssh/authorized_keys
chmod 644 .ssh/authorized_keys
```


### <a id="3.2">3.2 生成并配置密钥对</a>
生成一个密钥对
```
ssh-keygen -t rsa -C "fallshum"
```
这里会提示我们,是否修改路径,是否输入密码,使用默认,一路Enter往下走就行
```
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
1d:f1:b6:c9:42:2b:ab:1d:43:5a:72:fc:31:aa:38:9d fallshum
The key's randomart image is:
+--[ RSA 2048]----+
|          .      |
|           o     |
|          o o    |
|       . o = o   |
|      . S * +    |
|       * = +     |
|     ...= .      |
|    ..E+ o       |
|    ..o .        |
+-----------------+


```
把生成的公钥写入`/home/git/.ssh/authorized_keys`,并查看
```
cat /root/.ssh/id_rsa.pub >> /home/git/.ssh/authorized_keys
cat /home/git/.ssh/authorized_keys
```
把私钥放到客户端的.ssh目录下,先获取刚才生成的私钥
```
cat /root/.ssh/id_rsa
```
可以看到类似这样的一个私钥,复制出来
```
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAxtF2MFhb0xbOn2ngtHvWJTM1bW4V/IIBTKzCzTUg9S6tfTqZ
bzVS0qouNWJEOF+phW42Ban5bE9YrpqD3wG36w1fKntGVGXeGkdjiByxzW4wtZpv
gzn9d0o03JlpY3nciwqePfvkykaXDP8Kzg+JolMpxzuc3t4JEMa4nphC1sGrfWeS
IVIY6JxDqhemEkKIfncH44OLg9VslJgx0bL5hKQlkaiAkkI+qfX1XDzISmz6xnif
pzxz9Zwu9/j9GBgBxuD3T5AhnVj5gqjEt7Y4n/V6b/b78KAY9CJDy/nP+oXc4xmF
tdenMH6ZThOdmzwfaQGC4NSJXRK+9Rk8/8JSnQIDAQABAoIBADPERinAV+hWf+Yy
Azf7Jn75HmgnycG9d+km8nHL65DrXnDE2T6De9UuSmnL9EdZYSJE1/wRjcgNwOF1
ifB+2gxxpt3Ay0ceXv4oqFnAXutGTZh7ZZ2dc8mjoK/voeksyafKU/l/pMqmJp5T
qdSNZyDE1pPxiZ7d4S5lD5z7uCuCPELG8ZwGVjFY2xtcaIqfy0kPr5SDmkLDrktI
6Mxo2YFlae8tqvgud9LKZt9R5ubxyftgHf80bVJXVOvKNhN5UYNWssJ6FBt23jjb
pAK6oASATYyITC4a5leqR7vWW3m/wvYiHslouS0vmaxhdOdb4JUafLevmHtYlBZ3
8aGhM2ECgYEA6JQKDijObACWU6DCDKdadq2l0l3RSHOvncStIex/kM9vOgXHZ88d
DNEJB7l639t+Kv956uDr6WY7se7b5H+UVR4Wf8iTe9uexsJLiA/+LMBWEiY/qmE1
3lk4vHwYPWynmEyu/+ZtlNgQzHn0npvktgPCV1Hr/PcXzuxkvnbS+MMCgYEA2tcT
Cb9EJvhcKg/xUzidFtf5SSRu8yezxi+0gydOccuqm8j5jF9jXUZ4IASPpZH3zJRQ
x0SJuOfhhQevuyLI+HD6n3nVEAKc42xSuOYmLrErrbTOHIkwErhtcC05b79EdAbM
JObyA51O2jYCaY/VEny5cSLyYzATbhFn67p10R8CgYAtOdxatISva83PpUsWutRU
j5/XMHcp55UW0M/58Ms9lZjDZ6xG+3dirqNa5S6HqV73bYZ/rg0x7bdd+ly4Kjbl
9lvZrV9Ajoxpig61/qYmfaA/F0D6GL0o56CoxljQWPieHQtKp7xXXUym9nAjB52J
52E7KasCHep7SmysvN55kQKBgELCpAswL0FYOP2X+X3y4nFql6EJnVNOhFhsizwL
jLHIeRanXAHHw89bxR+3ZH8VJaxifrYboYwoKTNlIeYL+ZVZGgv2pdoJggUbMa04
gONzpyiJ5Ortqx2655/2G/SMO/zNag/D6IbTwY9uNJQxjcXjCMuL5rf9nZ/RbYuL
SY/vAoGAGkb/uKGnAhQc+ihcZaZAdZytOTFfEs5692J1rBAhisx1gDCEdkgOp1kH
2mHBwOexAvegb7MUzoRTw5cNYfYCmhkgQg+qOdLDSLvaFGSMNtkdftMif9E88oJ4
9mIblJfi2+GzpBee/I3RP+gxbLa+a83iw7TwQGLjssnjJ2QOsu4=
-----END RSA PRIVATE KEY-----
```
如果是在windows下,进入`C:\Users\myname\.ssh`,路径里面的`myname`是windows登录用户名,然后创建一个文本文档,把私钥复制进去,再把文件名改为`id_rsa`,不要`.txt`的后缀




## 4 初始化Git仓库
初始化一个仓库,将仓库的owner改为刚才创建的用户git,这样用户git就能操作这个仓库了
```
cd /home/git/
git init --bare fallshum.git
chown -R git:git fallshum.git/
```


## 5 客户端克隆仓库
客户端打开Git Bash,clone服务端仓库
```
git clone git@192.168.1.1:/home/git/fallshum.git
```
只要看到`Checking connectivity... done`就说明OK了


## 6 禁用shell登录
如果有需要禁用shell登录的话,执行
```
usermod -s /sbin/nologin git
```
禁用之后,可能出现错误提示`fatal: protocol error: bad line length character: This`
原因及解决办法参考[这里](https://stackoverflow.com/questions/22314298/git-push-results-in-fatal-protocol-error-bad-line-length-character-this)
重新开启,执行
```
usermod -s /bin/bash git
```


## 7 多key管理
ssh在客户端连接服务端的时候,默认使用`~/.ssh/id_rsa`私钥文件。当我们需要连接多个服务端的时候,需要进行多key配置。首先,通过上面[步骤3.2](#3.2)操作,生成了两个密钥对,分别将两个公钥放到对应`服务器`的`~/.ssh/authorized_keys`里面。将私钥文件放到`客户端`的`~/.ssh/`目录下,给两个不同的命名,比如`aliyun_rsa、tengxunyun_rsa`,
在`.ssh`目录下新建`config`文件,配置如下


```
# 配置文件参数
# Host 一个自定义名称,比如叫做aliyun,那么clone仓库的时候,就要用git clone git@aliyun:/home/git/fallshum.git
# HostName 实际要连接的主机地址
# PreferredAuthentications 配置登录时用什么权限认证--可设为publickey,password publickey,keyboard-interactive等
# IdentityFile 指明要使用的identityFile路径,也就是私钥的地址
# User 用户名


# aliyun
Host aliyun
HostName 192.168.1.1
PreferredAuthentications publickey
IdentityFile ~/.ssh/aliyun_rsa
User fallshum


# tengxunyun
Host tengxunyun
HostName 192.168.1.1
PreferredAuthentications publickey
IdentityFile ~/.ssh/tengxunyun_rsa
User fallshum
```


配置完成之后,可以在`客户端`用如下指令检验ssh是否配置成功
```
ssh git@aliyun
```
登录成功
![Git服务器搭建与使用2](http://o9knzde3g.bkt.clouddn.com/Git%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA%E4%B8%8E%E4%BD%BF%E7%94%A82.png)
`exit`退出
![Git服务器搭建与使用3](http://o9knzde3g.bkt.clouddn.com/Git%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA%E4%B8%8E%E4%BD%BF%E7%94%A83.png)


成功连接上,我们再分别尝试一下clone
```
git clone git@aliyun:/home/git/aliyun.git
git clone git@tengxunyun:/home/git/tengxunyun.git
```
都成功了
![Git服务器搭建与使用4](http://o9knzde3g.bkt.clouddn.com/Git%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA%E4%B8%8E%E4%BD%BF%E7%94%A84.png)


编程小号
上一篇 2025-01-10 17:11
下一篇 2025-01-10 17:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/107215.html