Shelton

搭建自己的git服务器

如何搭建自己的git服务器

起因

虽然说github很强大,但由于有些项目并不适合开源(代码太烂了),再说自己也买有VPS,就没必要再买github的私有空间(太贵了),于是网上找了些参考资料搭建git服务器并建立自己的私有仓库,试验成功后并写下总结存档。

需求

1.vps一台
2.putty或者Xshell(推荐)
3.GitBash(本地电脑用)

开始

安装Git

使用Xshell连接上vps终端,输入命令:

1
2
apt-get update
apt-get install git

新建git用户

出于安全考虑,我们肯定不能直接使用root账号或者其它具有完整的shell执行权限的账号,因此我们创建一个git账号,再修改密码,输入命令:

1
2
useradd git
passwd git

此处账号、密码都为git(密码请记住,会用得上),你也可以自己设置。

禁用shell登录

还是出于安全考虑,我们创建的git用户并不希望能够登录shell,这样可以通过/etc/passwd/完成,输入命令:

1
vi /etc/passwd/

找到类似这行(一般在文件尾)

1
git:x:1001:1001:,,,:/home/git:/bin/bash

修改为

1
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

如果不确认git-shell的位置,可以输入命令:

1
whereis git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

Git密钥登录

接下来,出于方便考虑,我们进行远程仓库操作不用每次pushpullfetch都输入密码,我们建立ssh密钥证书就显得非常有必要了。

首先我们打开本地电脑安装好的GitBash,输入命令:

1
ssh-keygen -t rsa

接下来会询问你路径以及密码,直接回车默认就好(一般文件放在C:\Documents and Settings\username\.ssh\ 或者 C:\Users\username\.ssh),在.ssh文件里面会有id_rsaid_rsa.pub两个文件,下面我们会用到id_rsa.pub文件。

紧接着在vps上输入命令创建/home/git/.ssh/authorized_keys

1
2
cd /home/git
mkdir .ssh && touch .ssh/authorized_keys

最后我们把本地的id_rsa.pub文件里面的内容全部复制到authorized_keys,这样我们就不用每次输入密码了,添加其它用户只要把id_rsa.pub添加到authorized_keys即可。

如果git公钥没有添加到authorized_keys又进行远程仓库操作时,填写的密码就是上面git用户的密码。

初始化git服务器仓库

上面的操作完成后,我们终于可以开始创建自己的私有仓库了。

初始化仓库这里有个注意点,注意区分git initgit init --bare,详细可以参考What is a bare git repository?这篇文章。

我们先创建文件夹并进入目录:

1
2
3
cd /home/git/
mkdir gitTest
cd gitTest

然后输入命令创建仓库:

1
git init --bare

Git就会创建一个裸仓库。

修改git仓库owner

创建好仓库后,我们一定要将仓库的owner设置为git用户,不然我们以后进行push操作时会出现Permission denied,输入命令:

1
chown -R git:git gitTest

clone远程仓库

现在就可以clone我们建立好的远程仓库了,在本地GitBash输入命令:

1
git clone ssh://git@vps_ip/home/git/gitTest

需要注意的是

1.vps_ip即为你vps的IP
2.如果你的vps修改了port的话,地址应该是这样:

1
ssh://git@vps_ip:port/home/git/gitTest

最后

到此,整个过程已经完成,just enjoy it!

相关参考资料