- 开启DSM的SSH远程功能
在“控制面板” →“终端机和SNMP”→“启动SSH功能”
- 建立Git用户
在“控制面板” →“用户账号”中添加Git专用用户。此处设置为git,用户组为users。权限为禁止访问任何共享文件夹
- 安装Git
进入“套件中心”,找到Git Server,安装
安装完成后,打开Git设置界面,将之前添加的git用户设置为允许访问 - 创建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_keysmkdir /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”
然后进入“工具”→“创建或导入SSH密钥”
其中“Generate”是生成新的密钥对,“Load”则是读取已经存在的私钥(比如上面git-bash里已经生成的私钥。
生成或读取后,分别保存公钥和私钥。私钥由客户端使用,公钥则需要添加到服务上的authorized_keys文件里。
在服务器端添加成功后,就可以不用再输入密码了。