git 服务器

需要在服务器中安装 git,不在需要其它工具。适合简单的单用户使用。

  • 搭建 Git 服务器非常简单,通常几分钟即可完成;
  • 要方便管理公钥,用 Gitosis;
  • 要变态地控制权限,用 Gitolite。

创建用户

创建 git 用户组和用户,用户名随便定义。

# 创建 git 用户组
[Linux]# groupadd git

# 创建 git 用户,并在 /home 目录下创建用户主目录、添加到 git 组
[Linux]# useradd -m git -g git

# 修改用户登录密码,上传仓库时会用到
[Linux]# passwd git

初始化仓库

用户家目录作为 Git 仓库,输入命令:

[Linux]$ cd /home/git
[Linux]$ git init --bare gitrepo.git

# 修改仓库的用户和用户组(可选,根据实际情况使用)
[Linux]$ chown git:git gitrepo/

克隆和推送

克隆仓库时,需要用户名(@ 前的字符)和路径(: 后边的字符)与服务器相符。

[Linux]$ git clone git@192.168.1.2:/home/git/gitrepo.git

推送本地修改到服务器时,需要输入 git 用户的密码。

[Linux]$ git push

禁止 git 登录

出于安全考虑,要禁用 git 用户登录 shell。编辑 /etc/passwd 文件,找到类似下面的一行:

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

# 将最后的 bash 更改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git 用户可以正常通过 ssh 使用 git,但无法登录shell。

创建证书登录

将本地用户的公钥(id_rsa.pub)导入到服务器的 /home/git/.ssh/authorized_keys 文件中,一行一个。

如果没有该文件创建它:

[Linux]$ cd /home/git/
[Linux]$ mkdir .ssh
[Linux]$ chmod 755 .ssh
[Linux]$ touch .ssh/authorized_keys
[Linux]$ chmod 644 .ssh/authorized_keys