git搭建自己的远程服务器
访问量:7343

一、简介

git服务器的环境:

centos6.5 (Linux localhost.localdomain 2.6.32-696.13.2.el6.i686 #1 SMP Thu Oct 5 20:42:25 UTC 2017 i686 i686 i386 GNU/Linux)

ip:192.168.13.142

首先得再服务端安装git工具,centos上面,快速安装命令如下:

 yum install -y git

二、安装git服务器

1、创建一个空的git库

找一个自己喜欢的位置,创建即可,我选择的是在git用户的家目录(/home/git/data)下面

git init --bare dq.git

使用 --bare 参数,使得无法在该仓库中编辑文件并提交更改。更多关于git init命令,可以点击“git初始化”。

dq.git 是指定创建的目录。

然后按照需要,修改文件的所有者和所属组。

2、git使用的协议

Git 可以使用四种主要的协议来传输数据:本地地传输,SSH 协议,Git 协议和 HTTP 协议。在此,主要说一下后面三个协议的格式,分别如下:

SSH协议格式

ssh://[user@]website.com:[port]/path/repo.git

ssh://是可以省略的。如:dequan@192.168.13.142:/home/git/data/dq.git。

Git 协议格式

git://website.com[:port]/path/repo.git

比如:git://192.168.13.142:/home/git/data/dq.git

HTTP协议格式

http[s]://website.com[:port]/path/repo.git/

比如:http://192.168.13.142/home/git/data/dq.git

其中,ssh协议和http[s]协议用的比较多,下面,我主要说的是以SSH协议来进行登录,关于SSH协议更多内容,可以点击“SSH 秘钥Key的简介以及生成和使用”。

3、ssh协议通过账户克隆远程库

如果此时直接去克隆创建的远程库,会提示密码:

git clone git@192.168.13.142:/home/git/data/dq.git

要求输入密码,因为我们在服务器的git用户密码下面创建的,如果我们以git用户登录,肯定可以的。于是想将git用户名改为git,然后再克隆:

竟然有警告:warning: You appear to have cloned an empty repository.

主要是因为我们创建的版本库里面什么都没有。此时当前目录下面已经有远程库了,名称为dq。文件夹的名字之所以,是因为在服务器初始化的时候指定了文件夹名,如下:

在dq目录下面.git目录的config文件中,我们可以查看到当前git的配置:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
[remote "origin"]
        url = git@192.168.13.142:/home/git/data/dq.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[user]
        name = git

此时,如果我们想提交的话,每次都会让我们输入密码,如下:

如果每次都得输入密码,岂不是太麻烦了。

4、ssh协议通过公钥克隆远程库

首先,我们需要在git的服务端打开RSA认证,在/etc/ssh/sshd_config文件中,默认是被注释的。

RSAAuthentication yes 
PubkeyAuthentication yes
AuthorizedKeysFile   .ssh/authorized_keys

同时,我们还需要在git用户的目录下(因为我们的git服务端库保存在git用户的家目录下面,也是我们ssh需要连接的地方),创建.ssh目录,并在.ssh目录下创建authorized_keys,来存储公钥。

然后,在需要连接git服务端的机器上面生成公钥,生成可以参考“SSH 秘钥Key的简介以及生成和使用”。

最后,将生成的公钥,添加到.ssh/authorized_keys文件中。

此时,再次克隆就不需要输入密码了,如下: