搭建Git服务器

目录

前言

本文使用阿里云centos7,搭建git服务器,并实现免密 git clone/push/pull

使用的服务器ip:47.98.248.213

1、安装git

用yum安装,比较简单。

yum install -y git

安装完成后,用 git version 查看版本。

2、创建一个git用户

adduser git

3、创建证书登录

3.1、打开RSA认证

修改 /etc/ssh/sshd_config 文件中的3项内容,改为:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

3.2、创建authorized_keys文件

此文件用于存储用户公钥。日后如果有需要访问git服务器的用户,将其公钥添加到此文件即可。

因为我们使用git用户访问仓库,所以先创建 /home/git 目录

mkdir /home/git
chmod 700 /home/git #修改权限
chown git:git /home/git #修改用户为git

/home/git 目录下,创建.ssh 目录

mkdir /home/git/.ssh
chmod 700 /home/git/.ssh #修改权限

再在 .ssh 目录下创建 authorized_keys 文件

touch /home/git/.ssh/authorized_keys
chmod 600 /home/git/.ssh/authorized_keys #修改权限

修改 .ssh 目录及 authorized_keys 文件的拥有者为git

chown git:git /home/git/.ssh
chown git:git /home/git/.ssh/authorized_keys

把用户的公钥放进去,一行一个,再有新的追加即可。

比如我的 authorized_keys 文件(放的是我的公钥):

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDk9Erd5YPRJUEKs+HEVNJFfTdoas47Vw/xxh+LELsSi/FZTFgQf5EfftS3iJxU6T6F5rrsSvmAphZpZ50T/f/a+/Z+kLvZypAKlrSQaWThOlWIdbdpJ270QzrfzKrUcqv3Tki/TeilGWM6YasuRRoxPyQcBmmO3+46l9spn2bv6Mkj64/yhLF0tfjeznZ/A3PVyLq/LAQ9RWfoJPDKrmsf4aMCm2az80rk7qzhxiGKt/G+NUUfTEY3XeuZkSx8T07gyF+wLE91Qf55Xi4phAfVfobBXCgAENEw6oBlKNfFR7Qhuu2R4Hazbf3v4jEBzwC+m5xzyABBp3AztsQ+lRvb

3.3、创建用户公钥(客户端)

我在win10上创建。如果已有,不用再创建。

使用git bash命令行窗口运行:

ssh-keygen -t rsa -C "你的邮箱" #生成一对公钥密钥

运行命令后会让你选择保存文件地位置,不用管,连续回车,3次。

一般生成的文件会保存在 C:\Users\user\.ssh 目录下。(比如我的是:C:\Users\yllyandy\.ssh

将生成的公钥(.pub文件)内容添到服务器 authorized_keys 文件中。

4、初始化git仓库

选择一个目录,初始化仓库。比如 /srv/

进入目录 /srv/ 下。运行:

mkdir gitrepo #创建gitrepo目录
cd gitrepo
git init --bare sample.git #初始化一个名为“sample”的仓库(无工作区)

更改仓库所属用户:

chown git:git sample.git

5、克隆仓库(客户端)

首先,要在客户端上,安装git。

如果只生成过一对公钥密钥,且未进行过其他配置。则运行下面的命令就行。

# 格式:git clone :仓库地址
git clone :/srv/gitrepo/sample.git

如果进行过配置,比如我的 C:\Users\yllyandy\.ssh 目录下有 config 文件,配置了两对公钥密钥。内容为:

# 该文件用于配置私钥对应地服务器
# aliyun - git user
Host git-server
HostName 47.98.248.213
User git
IdentityFIle C:/Users/yllyandy/.ssh/id_rsa_2
PubKeyAuthentication yes

# aliyun - root user
Host aliyun
HostName 47.98.248.213
User root
IdentityFile C:/Users/yllyandy/.ssh/id_rsa_aliyun
PubKeyAuthentication yes

则需要运行以下命令,才能免密地执行clone操作

# 格式:git clone Host:仓库位置
git clone git-server:/srv/gitrepo/sample.git

6、禁止git用户用户登录

为了安全起见,需要禁止git用户登录服务器,修改 /etc/passwd 文件:

#找到原git用户的配置:
git:x:1000:1000::/home/git:/bin/bash

#改为:
git:x:1000:1000::/home/git:/bin/git-shell

至此,git服务器安装完成。

如果有用户需要访问仓库,将他的公钥添加到 .ssh/authorized_keys 文件中即可。