搭建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
文件中即可。