一、简介
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文件中。
此时,再次克隆就不需要输入密码了,如下:
若您感觉本站文章不错,读后有收获,不妨赞助一下?
我要赞助