搭建配置一个基础的GIT服务器

搭建环境:centos7,以下操作在默认安装好GIT的前提下进行,通常GIT支持本地协议(Local)HTTP协议(http)SSH协议及GIT协议,详细介绍;下面采用ssh协议进行示例。

创建一个可以免密登录的专用账号

  • 系统中添加一个专用账号
  1. useradd git
  2. passwd git
  • 在客户端机器生产ssh-keygen秘钥并传输至服务器
  1. cd ~/.ssh/
  2. ssh-keygen
  3. scp id_rsa.pub git@xxx.xxx.xxx.xxx:/home/git/.ssh/xxx_rsa.pub
  • 服务器端加入用户公钥信息
  1. cd /home/git/.ssh
  2. touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
  3. cat xxx_rsa.pub >> authorized_keys
  • 客户端验证免密登录,ssh git@xxx.xxx.xxx.xxx查看是否成功如失败可以打印log信息ssh -Tvv git@xxx.xxx.xxx.xxx
    如果免密登录失败修改以下权 chmod 700 ~/.ssh chmod 600 ~/.ssh/

创建GIT服务器端目录

  1. $ cd /opt/git
  2. $ mkdir project.git
  3. $ cd project.git
  4. $ git init bare

关闭掉GIT用户的SSH登录权限

  • 通过 cat /etc/shells 看是否有git-shell ,如无执行第2步
  • 找到git-shell的位置, which git-shell
  • 将git-shell加入/etc/shells
  • chsh git 执行后输入git-shell位置如 /usr/bin/git-shell “这样,用户 git 就只能利用 SSH 连接对 Git 仓库进行推送和拉取操作,而不能登录机器并取得普通 shell。 如果试图登录,你会发现尝试被拒绝”
  • 完成验证,git已经不能通过ssh登录系统

添加一个新的GIT库

  1. $ mkdir /tmp/project.git
  2. $ cd /tmp/project.git
  3. $ git init bare
  4. Initialized empty Git repository in /opt/git/project.git/
  5. $ scp /tmp/pp.git xxx@xxx.xxx.xxx.xxx:/opt/git/pp.git

附件:

服务器上配置GIT:https://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E9%85%8D%E7%BD%AE%E6%9C%8D%E5%8A%A1%E5%99%A8