美文网首页
搭建私有git服务

搭建私有git服务

作者: 蛋西 | 来源:发表于2017-01-09 15:28 被阅读0次

    由于我们在工作中,经常使用git作为代码管理工具,git相比svn等管理工具的诸多优势,在这里就不多做讨论,请自行百度。代码管理,我们肯定是需要一个作为仓库的地方,本文主要介绍一下怎么在私有服务器上搭建git服务

    系统环境

    1. AWS EC2(Ubuntu)
    2. SSH
    3. git

    解释
    (Remote) 代表操作在远程服务器
    (Local) 代表在本地操作

    安装git(Remote)

    AWS EC2(Ubuntu)上默认安装了git,如果没有安装,参照如下:

    sudo apt-get update
    sudo apt-get install git
    

    添加git用户(Remote)

    在AWS EC2(Ubuntu)上添加git用户

    sudo useradd -m git   #添加git用户,名称可以自己设置,不一定要用git
    sudo passwd git   #修改git密码
    

    git用户主目录为/home/git/

    生成密钥(Local)

    在本机子上生成一对密钥

    ssh-keygen -t RSA -C "git"    #使用RSA加密,密钥备注
    

    回车后下一步下一步,其中会询问你是否输入私钥的密码,如果输入也可以,如果不输入直接回车即可

    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/eggsy/.ssh/id_rsa):  #输入密钥文件名称
    Enter passphrase (empty for no passphrase):   #输入私钥的密码
    Enter same passphrase again:  #重复输入私钥的密码
    

    然后会在当前目录生成一个密钥对

    将密钥上传到远程服务器(Local)

    scp -i ~/.ssh/eggsy.pem -r git_amazon.pub ubuntu@54.13.87.93:/home/ubuntu/
           密钥本地地址       要上传的文件(夹)路径 远程用户 IP     上传到的远程的目录   
    

    解释:

    1. 上文中的密钥本地地址是指连接远程服务器的密钥,不是新生成的密钥,用户可以根据ssh连接远程的方式来自行设置是否需要密钥
    2. 要上传的文件(夹)路径是指上一步生成的公钥的文件
    3. 远程用户是指你登陆远程ssh的账户
    4. ip地址是指远程服务器的地址
    5. 上传的远程目录是指上传到远程服务器的目录地址

    好了,以上就是所有的准备工作,接下来我们要将上传的公钥变成用户可以使用的公钥

    生成可以识别的密钥文件(Remote)

    cd ~  #切换到git主目录
    mkdir .ssh  #生成.ssh目录用来存放公钥
    sudo cat /home/ubuntu/git_amazon.pub >> /home/git/.ssh/authorized_keys  #将上传的公钥内容,追加到authorized_keys文件中去,用于识别登陆用户
    sudo chown -R git:git /home/git/.ssh  #设置目录和目录下的authorized_keys文件的拥有者和群组
    

    测试是否可以远程登陆(Local)

    ssh -i ~/.ssh/git_amazon git@54.13.87.93
    

    初始化git仓库(Remote)

    sudo git init --bare project.git  #project你可以自己指定仓库名称,基础仓库以.git结尾
    sudo chown -R git:git project.git
    sudo chmod -R 755 peoject.git
    

    验证(Local)

    git clone git@54.13.87.93:/home/git/peoject.git
    

    如果成功,会拉取到一个空的仓库

    Cloning into 'project'...
    warning: You appear to have cloned an empty repository.
    Checking connectivity... done.
    

    自此,一个git私有仓库就搭建好了

    附录

    额外指定key来访问远程仓库(Local)

    vim ~/.ssh/config 
    

    输入

    Host 你喜欢的名字,如gs
    Hostname 亚马逊PUBLIC DNS
    User git
    IdentityFile C:/Users/test/.ssh/id_rsa #你的私钥路径
    IdentitiesOnly 这个配置yes,表示只使用这里的key,防止使用默认的
    

    **关闭git用户的ssh shell登陆(Remote) **

    vim /etc/passwd
    

    找到git用户,在最后添加

    /usr/bin/git-shell
    

    结果如下:

    git:x:1001:1001::/home/git:/usr/bin/git-shell
    

    这时候就不能通过shell使用git账号登陆

    fatal: Interactive git shell is not enabled.
    hint: ~/git-shell-commands should exist and have read and execute access.
    Connection to 54.13.87.93 closed.
    

    相关文章

      网友评论

          本文标题:搭建私有git服务

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