一般来讲,搭建自己的git服务器都是不放心将代码放到公有平台,希望在自己的内网服务器维护代码库。所以,IP基本上都是内网的IP,所以我们不妨假设内网IP是192.168.8.8
。
– 远程服务器端:
- 安装git:
sudo apt-get install git
或sudo yum install git
。 - 服务器端创建一个git用户,专门用于git服务:
sudo adduser git
。 - 创建证书登录:收集所有需要登录的用户的公钥,就是他们自己的
id_rsa.pub
文件,把所有公钥导入到/home/git/.ssh/authorized_keys
文件里,一行一个 。
此时,准备工作基本上完成,我们可以考虑在服务器端创建git仓库。例如,我们创建/var/git_repo
目录,用于保存各个git工程。
进入这个目录cd /var/git_repo
,我们创建第一个工程rollingstone.git
:
sudo git init --bare rollingstone.git
再更改它的权限:
$ sudo chown -R git:git rollingstone.git
进一步,可以创建第二个工程tesla.git
:
sudo git init --bare tesla.git
再更改它的权限:
$ sudo chown -R git:git tesla.git
这样,在/var/git_repo
目录下,我们就会得到两个git文件rollingstone.git
和tesla.git
。
出于安全考虑,我们可以不允许登录shell,可以通过编辑/etc/passwd
文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git
用户可以正常通过ssh使用git,但无法登录shell,因为我们为git
用户指定的git-shell
每次一登录就自动退出。
– 客户端:
在客户端,比如我们自己的PC上,由于我们假设的内网服务器IP是192.168.8.8
,我们可以使用下面的命令来客隆:
$ git clone git@192.168.8.8:/var/tesla.git
这样,你就可以在自己的PC上去修改、推送这个tesla工程了。