Bernie Yu » git http://bernieyu.com 复刻生活 Tue, 17 May 2016 09:03:15 +0000 zh-CN hourly 1 https://wordpress.org/?v=4.2.38 在群晖Nas上搭建Git服务器 http://bernieyu.com/2015/06/built-git-server-on-synology-nas/ http://bernieyu.com/2015/06/built-git-server-on-synology-nas/#comments Fri, 26 Jun 2015 07:53:57 +0000 http://bernieyu.com/?p=244   >>阅读全文<<]]>
  • 开启DSM的SSH远程功能
    在“控制面板” →“终端机和SNMP”→“启动SSH功能”
    20150626141436
  • 建立Git用户
    在“控制面板” →“用户账号”中添加Git专用用户。此处设置为git,用户组为users。权限为禁止访问任何共享文件夹
    20150626141852
  • 安装Git
    进入“套件中心”,找到Git Server,安装
    20150626142125安装完成后,打开Git设置界面,将之前添加的git用户设置为允许访问20150626142342
  • 创建Git库文件夹并设置权限
    以root用户SSH登录到DSM,在目标盘下创建git库目录

    cd /volume1
    mkdir git

    创建测试项目

    cd git
    mkdir test

    初始化git

    cd test
    git init --bare

    设置目录权限

    chown -R git:users /volume1/git
  • 客户端:
    Windows:
    下载并安装  http://msysgit.github.io/
    Linux:

    yum install git-core

    apt-get install git-core

    安装完成后,进入git-bash,测试

    git clone ssh://git@192.168.1.5/volume1/git/test

    测试添加文件并提交到本地库

    echo "t1.txt" >t1.txt
    
    git add t1.txt
    
    git commit -m "add t1.txt"

    推送到远程库

    git push origin master
  • 设置SSH Key
    现在所有与远程库的交互都需要输入密码,除了不方便,还有不安全,不过可以使用SSH公钥来进行授权。
    在msysgit安装好后,已经生成了公钥和密钥。在git-bash中查看:

    $ ls ~/.ssh
    id_rsa  id_rsa.pub  known_hosts

    其中,id_rsa就是私钥,id_rsa.pub则是公钥。把公钥复制到远程服务器:

    $ scp -P 9822 ~/.ssh/id_rsa.pub  root@192.168.1.5:/volume1/homes/git/.

    这里用的不是SSH标准的22端口,而是9822。如果是标准端口,则不用输入-P参数
    把公钥内容追加到authorized_keys

    mkdir /volume1/homes/git/.ssh
    cat /volume1/homes/git/id_rsa.john.pub >> /volume1/homes/git/.ssh/authorized_keys

    更改权限

    chown -R git:users /volume1/homes/git/.ssh
    chmod 644 /volume1/homes/git/.ssh/authorized_keys

    再与远程库交互就不会再要求输入密码了。

  • 配置SourceTree的SSH Key
    使用SourceTree做客户端的话,SSH Key的配置有一些不同。
    首先需要在“工具”→“选项”→“一般”中,将SSH客户端设置为“PuTTY/Plink”
    20150626154646
    然后进入“工具”→“创建或导入SSH密钥”
    20150626154946
    其中“Generate”是生成新的密钥对,“Load”则是读取已经存在的私钥(比如上面git-bash里已经生成的私钥。
    生成或读取后,分别保存公钥和私钥。私钥由客户端使用,公钥则需要添加到服务上的authorized_keys文件里。
    在服务器端添加成功后,就可以不用再输入密码了。
  • ]]>
    http://bernieyu.com/2015/06/built-git-server-on-synology-nas/feed/ 0