搭建自己的Git仓库

最近心血来潮想自己搭建个Git仓库玩玩 折腾了一番~ 服务器就架在了虚拟机上,用的centos


序:先来科普2个东西

SSL:Secure Sockets Layer 它是介于TCP层和HTTP层的协议 它仅仅是一个安全协议 用于对数据包进行非对称加密

OpenSSL:OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols 大概意思:OpenSSL是一个开源项目,它为传输层安全(TLS)和安全套接字层(SSL)协议提供了健壮的、商业级的、功能齐全的工具包

SSH:Secure Shell 它是建立在应用层基础上的安全协议,用于对传输的信息进行加密 另外他传输的数据是经过加密的 还可以加快传输

OpenSSH:它是SSH协议的免费开源实现。官网的话 :OpenSSH is the premier connectivity tool for remote login with the SSH protocol.大概是 openssh 是使用ssh协议进行远程登录的首选连接工具

安装OpenSSH【如果已经安装请忽略本步】

安装Git的话 由于我们以后会使用基于ssh服务的登录 所以需要安装OpenSSH 而 OpenSSH又依赖OpenSSL 所以先检查你的系统是否已经安装了这些 如果没有请先安装 贴3个地址:
OpenSSL
OpenSSH
Git

基本就是解压 然后安装 make && make install

安装完如果想测试是否成功可以直接使用ssh login_username@serverIP来验证下 如果输入密码可以顺利登陆 OK 安装成功

创建Git用户

为了防止冲突建议新建一个git用户

1
2
3
[root@root ~]# useradd git
[root@root ~]# passwd git
#输入新密码就可以了

创建Git仓库
你可以随便在一个文件夹下创建一个仓库(其实就是建立一个文件夹) 比如 var/git/myfirst.git
进入你创建的这个目录然后执行 git init -bare 就是告诉他建立一个干净的仓库 别的啥也不要
切换到刚创建的git用户在家目录下的隐藏目录 .ssh下新建一个文件 authorized_keys 其实就是用来存放以后要登录进来的用户的公钥 这个文件叫什么名字都可以的
编辑sshd的配置文件添加配置
1
2
3
4
5
6
vi /etc/ssh/sshd_config
#找到 RSAAuthentication 和 PubkeyAuthentication 把他们前面的注释#号删除
RSAAuthentication yes
PubkeyAuthentication yes
# 找到AuthorizedKeysFile 把他后面的路径地址改成你上面添加的那个文件
AuthorizedKeysFile /home/git/.ssh/authorized_keys
然后保存重启sshd服务
测试仓库
1
2
3
4
5
6
7
8
# 在本地随便找个地方clone下git
git clone git@192.168.1.233:/var/git/myfirst.git
#以下是输出内容
Cloning into 'myfirst'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/d/test
$ cd myfirst/
/d/test/myfirst (master)
$ vi test.txt
/d/test/myfirst (master)
$ git add .
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory.
/d/test/myfirst (master)
$ git commit -m 'my first commit'
[master 81b38b0] my first commit
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory.
1 file changed, 1 insertion(+)
create mode 100644 test.txt
/d/test/myfirst (master)
$ git push origin master
Counting objects: 3, done.
Delta compression using up to 16 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 283 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.234.129:/var/git/myfirst.git
937b2f6..81b38b0 master -> master
/d/test/myfirst (master)
$

如果以上内容没有报错啥的 恭喜你成功了 搞定~


-------------The End-------------