美文网首页
CentOS7下Git私服搭建

CentOS7下Git私服搭建

作者: iced_lemonade | 来源:发表于2018-05-09 17:30 被阅读0次

    前端需要进行系统开发时,需要做版本控制,所以打算使用Git进行协同开发,但是工作内容不好放在github公有仓库托管,也没有资金购买私有托管服务,所以需要自己搭建一个Git私有仓库。

    搭建环境为:CentOS7

    yum源仓库里的Git版本比较老,是1.8.3.1,而Git最新版本已经到2.17.0了,所以使用yum源安装的Git版本不是最新的,如果有需要安装最新版本的需要进行源码安装。本文只记录使用yum源安装的过程,不讨论源码安装。

    1、首先确保服务器能上外网。
    2、安装Git

    切换到root用户下进行安装操作

    [root@localhost ~]# su root
    

    安装Git

    [root@localhost ~]# yum install git
    

    一路默认安装,完成后使用git --version可以查看git版本

    [root@localhost ~]# git --version
    git version 1.8.3.1
    [root@localhost ~]# 
    
    3、添加git管理的账户并设置密码
    [root@localhost ~]# adduser git
    [root@localhost ~]# passwd git
    

    输入git密码后确认

    4、git仓库权限管理

    由于开发团队很小,所以通过ssh公钥进行管理。

    4.1 配置服务端的ssh访问
    • 切换到git用户
      [root@localhost ~]# su - git
      
    • 进入git账户的主目录
      [git@localhost ~]# cd /home/git
      
    • 创建.ssh的配置,如果此文件夹已经存在,则忽略该步骤
      [git@localhost git]# mkdir .ssh
      
    • 进入.ssh目录,并创建authorized_keys文件,此文件存放客户端远程访问ssh的公钥
      [git@localhost git]# cd /home/git/.ssh
      [git@localhost .ssh]# touch authorized_keys
      
    • 设置权限
      如果不设置这些权限,在客户端连接该仓库时,不能免密登录
      [git@localhost .ssh]# chmod 700 /home/git/.ssh
      [git@localhost .ssh]# chmod 600 /home/git/.ssh/authorized_keys
      

    至此,服务端的配置基本已经完成,接下来就需要在客户端生成公钥文件,并将该文件拷贝到服务器端。

    4.2、配置客户端私钥,并将其上传到服务器端
    • 检查是否已经有ssh公钥和私钥
      我们开发环境是Windows,所以在C:\Users\用户名\.ssh下查找是否已经有id_rsaid_rsa.pub文件。其中,id_rsa是私钥,id_rsa.pub是公钥。如果没有,则需要创建ssh公钥和私钥:
      在打开的cmd窗口中,使用如下命令创建密钥对
      ssh-keygen -t rsa
      
      接下来,三个回车默认即可。
    • 拷贝公钥到git服务器
      id_rsa.pub拷贝到服务器的 /home/git/.ssh/目录下
    4.3 在服务端天剑客户端的 ssh公钥
    • 在服务器端,将刚才拷贝的公钥添加进authorized_keys文件中
      [git@localhost ssh]# cat id_rsa.pub >> authorized_keys
      
      现在,在客户端可以直接使用ssh的方式登录服务器了(这样不安全,所以接下来要禁止该账号的shell登录)
      在客户端测试用ssh登录服务器:
      ssh git@192.168.100.10
      
    4.4 在服务端创建测试git仓库

    进入服务器终端
    切换到git用户

    [root@localhost ~]# su - git
    

    进入git账号的用户主目录

    [git@localhost ~]# cd /home/git
    

    创建测试仓库文件夹test.git,然后进入test.git目录下

    [git@localhost git]# mkdir test.git
    [git@localhost git]# cd test.git
    

    初始化该测试仓库

    [git@localhost test.git]# git init --bare
    

    现在,客户端就可以clone或者remote add此仓库了

    4.4 在客户端连接git远程仓库

    建一个空文件夹,叫git-test
    在该目录下执行

    git init
    

    向该目录下添加一张图片,名为test.jpg,继续执行

    git add "test.jpg"
    git commit -m "add an image"
    

    此时,已经将该图片添加到本地仓库,接下来就需要将本地仓库和远程仓库进行连接并同步

    git remote add origin git@192.168.100.10:test.git
    git push -u origin master
    
    4.5 禁用客户端的ssh登录

    虽然,现在已经可以使用git私服了,但是客户端可以使用ssh登录,这样很不安全,接下来就要禁用客户端的ssh登录

    • /home/git下创建一个git-shell-commands目录,并把目录的拥有者设置为git账户。
    [root@localhost ~]# su - git
    [git@localhost ~]# mkdir /home/git/git-shell-commads
    
    • 修改/etc/passwd文件
    [root@localhost ~]# vi /etc/passwd
    

    找到下面这句,将其注释掉(1000可能为别的数字,在前面加一个‘#’符号即为注释)
    git:x:1000:1000::/home/git:/bin/bash
    然后在后面添加一行
    git:x:1000:1000::/home/git:/bin/git-shell
    然后退出保存,此时客户端再使用ssh登录,便会提示如下信息:

    $ ssh git@192.168.10.10
    Last login: Wed May  9 22:49:57 2018
    fatal: Interactive git shell is not enabled.
    hint: ~/git-shell-commands should exist and have read and execute access.
    Connection to 192.168.100.10 closed.
    
    5 结尾

    现在,Git私服搭建基本已经完成,但是还有好多问题自己没有摸索明白,在以后的使用中,可能会不断学习各种操作,到时候再继续完善这个搭建过程!

    相关文章

      网友评论

          本文标题:CentOS7下Git私服搭建

          本文链接:https://www.haomeiwen.com/subject/upxorftx.html