Linux 下搭建 Git 服务器

一. 系统环境

[root@localhost home]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

二. 安装 Git

服务器端:

[root@localhost home]# yum install -y git

安装完成后,查看Git版本号:

[root@localhost home]# git --version
git version 1.8.3.1

本地:略。

三. 创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码

[root@localhost home]# id git
id: git: no such user
[root@localhost home]# useradd git
[root@localhost home]# passwd git
Changing password for user git.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

四. 创建 Git 仓库

设置 /home/data/git/test.git 为 Git 仓库,然后把 Git 仓库的 owner 修改为 git:

[root@localhost home]# mkdir -p data/git/test.git
[root@localhost home]# git init --bare data/git/test.git
Initialized empty Git repository in /home/data/git/test.git/
[root@localhost home]# cd data/git/
[root@localhost git]# chown -R git:git test.git/

五. 服务器端 Git 打开 RSA 认证

进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释,然后重启 sshd 服务:

[root@localhost ssh]# cd /etc/ssh/
[root@localhost ssh]# vim sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
[root@localhost ssh]# systemctl restart sshd

在 /home/git/ 下创建目录 .ssh:

[root@localhost ssh]# cd /home/git/
[root@localhost git]# mkdir .ssh

然后把 .ssh 文件夹的 owner 修改为 git:

[root@localhost git]# chown -R git:git .ssh

六. 添加客户端 ssh key 到服务器

Neuer@Neuer MINGW64 ~/.ssh
$ ssh git@192.168.118.140 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

查看服务器端是否存在authorized_keys文件:

[root@localhost git]# cd .ssh/
[root@localhost .ssh]# ll
total 4
-rw-rw-r--. 1 git git 398 Sep 21 17:22 authorized_keys

修改 .ssh 目录的权限为 700,修改 .ssh/authorized_keys 文件的权限为 600:

[root@localhost git]# chmod 700 .ssh
[root@localhost git]# cd .ssh/
[root@localhost .ssh]# chmod 600 authorized_keys

七. 客户端 clone 远程仓库

Neuer@Neuer MINGW64 ~/.ssh
$ git clone git@192.168.118.140:/home/data/git/test.git
Cloning into 'test'...
warning: You appear to have cloned an empty repository.

八. 禁止 git 用户 ssh 登录服务器

编辑 /etc/passwd,将bash修改为git-shell:

[root@localhost .ssh]# vim /etc/passwd
/home/git:/bin/bash ->
/home/git:/bin/git-shell

不听乱世的耳语,只过自己想要的生活