最近帮朋友弄git私服,记录一下方便以后操作。
目标:在linux上搭建一个git服务器,供远程操作项目管理。本篇不做权限管理,通过手动在服务器维护authorized_keys方式授权。如果想参考gitlab 可视化管理方式,请看:Linux搭建gitLab
搭建环境
- 服务器 CentOS7.5 + git(version 1.8.3)
- 客户端 Windows10 + git(version 2.17.1.windows.2)
一、服务端搭建
- 安装git
yum install git -y //拉取最新git即可
- 查看git版本
git --version //正常显示版本表示安装成功
- 添加git用户
useradd git //这里不一定非要是 ‘git’这个名字,为了方便使用git
- 修改git登录密码
passwd git //修改上一步添加git的用户密码!!!注意密码强度要规范!!!
这里注意密码强度一定要合法,8-16位数字、字母、字符且不能含有用户名,下面就是错误提示
- 创建一个git空项目
cd /app/
mkdir test
cd test/
git init --bare test.git //bare方式创建一个空项目
至此服务端的git已经安装部署好,并且已经生成了一个空目录的git项目,git地址为:git@ip:port/dir/example.git 例如git@127.0.0.1:/app/test/test.git
如果ssh默认端口22可以省略不写,否则port为对应ssh端口
二、客户端安装
- git官网下载版本安装 https://git-scm.com/downloads
- windows电脑打开一个文件夹,右键选择 Git Bash here,在git窗口检验是否安装成功。
git --version
- 下载服务端的git项目
git clone 服务ip:/app/test/test.git //初次链接服务器,会提示是否授信,输入yes即可
4.clone项目时会提示输入密码,直接输入在服务端创建git账号时填写的密码即可。即前面提到的git用户的密码。
至此客户端应能够下载git代码了,但仅限于用git账号密码ssh链接下载,显然不是我们想要的!如何使用自己的git账号连接远程git服务器进行代码的操作呢?
三、使用SSH公钥操作git服务器
- 客户端生成ssh公钥
ssh-keygen -t rsa -C "gitEmail@163.com" //一路回车即可
-
找到ssh公钥和私钥,windows客户端C:\Users\你的用户.ssh
id_rsa为私钥,id_rsa.pub公钥,公钥可以配置在git服务器上
- git服务器打开RSA认证
进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:
RSAAuthentication yes //RSA权限认证
PubkeyAuthentication yes //公钥认证(若没有手动添加)
AuthorizedKeysFile .ssh/authorized_keys //公钥存放地址,这里的.ssh指的是git用户的.ssh目录,非root用户的目录,即/home/git用户/.ssh
重启sshd服务
systemctl restart sshd.service
- 添加客户端id_rsa.pub到git服务器authorized_keys
cd /home/git
mkdir .ssh //如果不存先创建
cd .ssh/
chown -R git:git .ssh //授权
chmod 700 -R git:git /home/git //文件夹权限
touch authorized_keys
rz id_rsa.pub
cat id_rsa.pub >> authorized_keys
- 关闭git用户shell登录
git服务端:编辑/etc/passwd文件,将
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
至此,已经完成了git服务器的搭建,已经添加ssh公钥的用户,可以在客户端进行git操作了!