linux 下搭建基于 ssh 的 git 服务器

首先, 需要有 git 和 ssh, 在 ubuntu 下你可以执行

1
sudo apt install -y git openssh-server

然后创建一个新用户 git, 并指定默认 git-shell

1
sudo useradd -s /usr/bin/git-shell -m git

并且禁止 git 用户登录

1
sudo passwd -l git

然后通过登录 git 用户导入公钥

1
2
3
4
sudo su - git -s /bin/bash
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
cat 公钥路径 >> .ssh/authorized_keys

新建一个项目, 就只要在 git 用户的 home 目录下创建裸仓库

1
git init --bare repo.git

到这基本就完成了, 可以从通过 ssh 访问 git 服务器 clone 仓库

默认 22 端口的 git clone

1
git clone git@<server>:repo.git

自定义 ssh 端口的 git clone 需要指定绝对路径

1
git clone ssh://git@<server>[:port]/path/to/repo.git