zoukankan      html  css  js  c++  java
  • git私服

    整合版 适用于CentOS7
    2017年3月29日 0:10:46


    目录

    安装 git

    $ sudo apt-get install git
    

    在服务器上部署 Git

    1.在服务器上创建一个新用户

    adduser git
    

    设置访问权限

    有几个办法可以让团队的每个成员都有访问权:

    1. 给每个人建立一个账户。反复使用 adduser 并给所有人设定临时密码比较麻烦。
    2. 在服务器上建立一个 Git 账户,让每个需要写权限的人发送一个 ssh 公钥,然后将其加入 Git 账户的 ~/.ssh/authorized_keys 文件。这样,所有人都将通过 Git 账户访问主机。
    3. 另一个办法是让 ssh 服务器通过某个 LDAP 服务,或者其他已经设定好的集中授权机制,来进行授权。

    这里我们使用第二种方法,收集所有需要登录该 Git 服务器用户的公钥,就是他们自己的 id_rsa.pub 文件,把所有公钥导入到 /home/git/.ssh/authorized_keys 文件里,每行一个。(注意:/home/git/.ssh/authorized_keys 这个文件的 owner 为 Git ,如果不是请使用 chown 命令修改)。

    下面是创建公钥命令:

    $ ssh-keygen -t rsa -C  'your email@domain.com'
    

    -t 指定密钥类型,默认即 rsa ,可以省略
    -C 设置注释文字,比如你的邮箱
    关于创建公钥的详细信息,可以参考 http://github.com/guides/providing-your-ssh-key

    2.创建一个git仓库

    ** 注意: 用git用户登录,然后进行以下操作 **

    cd /data/git //切换到希望创建工作区的目录
    git init --bare sample.git //创建一个Git仓库,此时Git会创建一个唯一分支master
    chown -R git:git sample.git//将sample.git的所有权从root修改到新创建的git (重要,如果是git用户操作,则不需要此操作)
    

    3.在服务器端打开RSA认证(重要)

    编辑 etc/ssh/sshd_config
    去掉以下几行的注释, 开启公钥认证登陆 。

    RSAAuthentication yes  
    PubkeyAuthentication yes  
    AuthorizedKeysFile      .ssh/authorized_keys  
    AuthorizedKeysCommand none  
    AuthorizedKeysCommandRunAs nobody
    

    如果需要禁止使用密码登录,可以设置

    PasswordAuthentication no
    

    重启ssh

    service sshd restart
    

    创建用于存放客户端公钥的文件

    其中.ssh和authorized_keys文件都是git权限(重要)

    cd /home/git //切换到刚刚创建的git用户目录下
    mkdir .ssh
    vim authorized_keys //创建用于存放客户端公钥的文件
    

    SSH对公钥、私钥的权限和所有权的要求是非常严格的,总结如下:
    设置.ssh目录权限

    $ chmod 700 -R .ssh
    

    设置authorized_keys权限

    $ chmod 600 authorized_keys
    

    要保证.ssh和authorized_keys都只有git用户自己有写权限。否则验证无效。

    4.在客户端创建SSH key

    ssh-keygen -t rsa -C "sample@geekzhou.com"
    

    该命令会在用户主目录的.ssh文件夹下生成两个文件:用于保存私钥的id_rsa和用于保存公钥的id_rsa.pub

    5.把步骤4生成的公钥导入服务器

    将生成的id_rsa.pub中的内容拷贝到服务器文件/home/git/.ssh/authorized_keys

    6.在客户端clone远程git仓库

    git clone ssh://git@23.105.219.141:26397/home/data/sample.git
    其中23.105.219.141:26397是服务器端的IP地址和端口
    (由于进行了步骤4和步骤5的设置,所以在clone仓储的时候就无需再输入密码了)
    

    注意是使用ssh协议访问git私服

    7.禁止用户git通过shell进行登录

    由于进行了步骤4和步骤5的设置,此时客户端可以通过ssh git@115.28.222.133 直接登录到服务器,如需禁止,修改文件/etc/passwd:

    将git:x:1000:1000::/home/git:/bin/bash
    修改为:git:x:1000:1000::/home/git:/usr/bin/git-shell
    

    参考:
    http://wlog.cn/soft/git-ssh-server-for-debian.html
    https://segmentfault.com/a/1190000008403740
    http://geeksun.iteye.com/blog/2221671

  • 相关阅读:
    JAVA基础(十六)Super关键字
    JAVA基础(十五)this关键字
    JAVA基础(十四2.0)
    JAVA基础(十三)多态
    JAVA基础(十二)抽象类与接口
    git基本使用
    vuetify中treeview部分属性梳理
    vuetify初次使用心得
    react-常见面试题
    maven中profile的使用
  • 原文地址:https://www.cnblogs.com/jarl/p/6637751.html
Copyright © 2011-2022 走看看