搭建简单的Git服务

搭建简单的Git服务

安装 Git

1
$ sudo apt-get install git

接下来创建一个 git 用户组和用户,用来运行 git 服务:

1
2
3
$ sudo groupadd git
# 添加用户并使用 -g 指定用户组
$ sudo useradd git -g git

创建证书登录

收集所有需要登录的用户的公钥,公钥位于 id_rsa.pub 文件中,把我们的公钥导入到 /home/git/.ssh/authorized_keys 文件里,一行一个。

如果没有该文件创建它:

1
2
3
4
5
6
# 新建 git 用户目录,设置相关权限
$ cd /home/git/
$ mkdir .ssh
$ sudo chmod 755 .ssh
$ touch .ssh/authorized_keys
$ sudo chmod 644 .ssh/authorized_keys

初始化 Git 仓库

1
2
3
4
5
6
7
8
$ cd /data
$ mkdir gitrepo
$ sudo chown git:git gitrepo/
$ cd gitrepo

# 创建裸仓
$ git init --bare blog.git
Initialized empty Git repository in /data/gitrepo/blog.git/

以上命令 Git 创建一个空仓库,服务器上的Git仓库通常都以 .git 结尾。然后,把仓库所属用户改为 git:

1
$ sudo chown -R git:git blog.git

禁用 shell 登录

出于安全考虑,创建的 git 用户不允许登录 shell ,这可以通过编辑 /etc/passwd 文件完成。找到类似下面的一行:

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

改为

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

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

克隆仓库

1
2
3
4
5
# 请将 ip 和端口修改为自己的。
$ git clone ssh://git@192.168.1.1:22/data/gitrepo/blog.git
Cloning into 'runoob'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

Git 服务器搭建完成。

赞赏