服务器搭建Git服务
@(计算机基础)[git, 版本管理]
[TOC]
1.整体部署思路
下载git 安装包(rpm)-->安装git服务-->测试git是否安装成功-->配置对外端口(git 使用ssh:22进行传输)-->创建git管理账户-->在git管理账户下创建仓库目录-->初始化git仓库-->客户端git工具安装-->客户端生成ssh公钥私钥-->服务器打开ssh的rsa认证-->导入客户端的ssh公钥-->配置相关文件的用户及权限-->客户端clone 仓库-->客户端修改-->提交-->push代码-->查看服务器代码是否同步
2.安装
1. 下载安装
# 运行环境: linux center-os-7 64
# 推荐使用 yum安装
# 查看已安装程序中是否有git
yum list installed | grep git
# 查看git 安装源信息 本次安装版本 1.8.3.1(需要当前用户是管理员)
sudo yum install -y git
2. 查看安装信息
# 查看git 运行目录
whereis git
# 查看git 版本信息
git --version
3.初始化配置
1. 新建git管理账户
# 查看是否已经存在git 用户
id git
id git: no such user
# 创建git 用户用来管理git 服务
sudo adduser git
# 设置密码
sudo passwd git
2. 配置仓库目录及初始化
# 切换至git 用户
su git
cd ~
# 创建git 仓库根目录(该目录权限归为 git)
mkdir -p ~/data/git
# 创建测试仓库
mkdir -p ~/data/git/gittest.git
cd ~/data/git/
# 保证该目录归git用户所有
ll
# 如果不是,请使用 chown 修改目录所有者
chown -R git:git ~/data/git/gittest.git/
# 使用 git 初始化仓库(将 git 用户加入到管理组 作为中央仓库,一定要加上shared,否则后去push 会deny)
sudo git init --bare ~/data/git/gittest.git --shared
# `Initialized empty Git repository in /home/git/data/git/gittest.git/.git/`
# 查看仓库目录
cd ~/data/git/gittest.git/.git
ll
3. 配置相关目录权限
# 修改目录权限
su root
chown -R git:git /home/git/data/git/gittest.git
# 回到git
su git
4.客户端配置
1. 客户端工具安装
1.1 windows
请下载git 工具,并安装(傻瓜式的,下下来点击安装即可,下载地址)
1.2 MacOS
Mac 推荐使用brew进行安装
sudo brew install git
1.3 clone remote repository
# 克隆项目
git clone git@serverIP:/home/git/data/git/gittest.git
# 提示 unkonw host 需要配置ssh key
2. 客户端获取ssh 公钥私钥
2.1 生成ssh key
推荐使用 ssh-keygen 工具,Mac系统自带, windows系统,可以通过上述的git 工具(git bash)内的ssh-keygen
5.服务端ssh配置
1. 开放rsa认证
- 切换至root 用户
su root
- 开放rsa认证 编辑 /etc/ssh/sshd_config
vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
- 保存配置,并重启sshd 服务
/etc/rc.d/init.d/sshd restart
2. 导入客户端ssh rsa公钥证书
# 上述中 AuthorizedKeysFile 指定的值 就是授权公钥证书存放位置,我们使用git进行连接的话,应该配置到/home/git下
su git
cd ~
ls -al
mkdir .ssh
ls -al
# windows 使用git bash 将公钥导入至服务器,Mac用户直接在terminal中运行
ssh git@ServerIP 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
6.客户端测试
1. 连接测试
git clone git@serverIP:/home/git/data/git/gittest.git
# 成功!
2. status\add\commit\push 测试
# 创建readme.md
cd ./gittest
echo '#Hello Git'>readme.md
# 查看状态
git status
# 将当前目录所有文件添加进工作空间
git add .
# 查看状态
git status
# 将本地工作空间 提交到本地仓库
git commit
# 将本地仓库分支 同步到远程分支上(这里如果是deny, 确认一下初始话中央git仓库初始化时,是否添加--shared参数)
git push origin master:master
7.关闭git用户ssh登陆
编辑/ect/passwd
vi /ect/passwd
修改
git:x:502:504::/home/git:/bin/bash
>git:x:502:504::/home/git:/bin/git-shell
8. 参考
参考: Meadows of Heaven《在 Linux 下搭建 Git 服务器》
推荐: qiuri2008 《Git 仓库及管理》