虽然以前也搭过,但是重新搭建一次的时候还要重新从网络上查找资料;

最近想着别把租来的服务器荒了,自己搭个Git服务器放点东西上去,顺路记录一波搭建过程。

第一步

在服务器上安装 git

centos

1
sudo yum install git

ubuntu

1
sudo apt-get install git

第二步

创建 git 用户,用来运行git服务

1
sudo adduser git

可以同时为git用户修改密码

1
sudo passwd git

第三步

免密登录

通过证书的方式来通过ssh使用git功能,需要创建证书,并收集需要登录的用户的公钥文件(~/.ssh/id_rsa.pub),导入到/home/git/.ssh/authorized_keys文件内,一行一个;

公钥可以通过执行ssh-keygen -t rsa -C "yourname@mail.com"进行生成

修改authorized_keys文件的权限

1
chmod 600 authorized_keys

这一步必须要做,不然验证的时候还是会需要让你输入密码,具体原因不知;

第四步

初始化git仓库,找个地放用来放你的git仓库,这里我选了/data/repositorys这个路径;

1
git init --bare TestGit.git

git创建一个裸仓库,裸仓库没有工作区,因为服务器上的git仓库纯粹为了共享,所有不能让用户直接登录到服务器上去改工作区,并且服务器的git仓库通常以 .git 结尾。然后,修改owner改为git

1
sudo chown -R git:git TestGit.git

第五步

禁用shell登录:
处于安全的考虑,第二步创建的git用户不允许登录shell,这可以通过编辑 /etc/passwd文件完成。

1
git:x:1003:1003::/home/git:/bin/bash

改为:

1
git:x:1003:1003::/home/git:/usr/bin/git-shell

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

第六步

验证,克隆远程仓库:
现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:

1
git clone git@server:/data/repositorys/TestGit.git

如果服务器SSH端口不是默认的22的话,可以这样:

1
git clone ssh://git@server:port/data/repositorys/TestGit.git

运行完成后,正常的情况下会出现以下提示:

1
2
Cloning into 'TestGit'...
warning: You appear to have cloned an empty repository.

参考