群晖 NAS 搭建 Git Server,免密登录全攻略
最近在笔记本上开发一些项目,担心Git管理的项目没有及时备份,想到家里有一台群晖NAS,用NAS部署 Git 的文章有一些,有些把GItlab都部署好了,Gitlab功能虽然强大,但配置过多其实家用同步用不上,另外NAS还是老旧的DS216Play,性能有限,没必要上那种大家伙。
网上读到一篇搭建Git Server的文章,比较简单,迅速搭好了,总结如下:
Windows + Git bash + SSH工具(Windows自带也可以) + 群晖
群晖控制界面操作:(DSM 7.1.1)
群晖套件,安装Git Server

2. 创建共享文件夹,用于存放所有代码库

3. 创建用户,给Git代码文件夹权限


4. 打开Git Server,加入新增用户:

5. 打开SSH:

转入客户端操作:
客户端SSH:(root用户登录)
sudo -i
cd /volume1/gitserver/
mkdir code
cd code
git init --bare
cd ..
chown -R gitester:users code
chmod -R 770 code

客户端Git bash:
git clone ssh://gitester@192.168.31.16/volume1/gitserver/code
cd code
git remote -v

然后我们本篇的重点来了,现在我们每次git操作都必须输入一遍密码,特别的繁琐,那就应该加认证,做成免密码使用,本来以为可以分分钟搞定,结果因为群晖和主流开源Linux有点区别,花了好一会儿才摸索出来:
客户端SSH:(root用户登录)
mkdir -p /var/services/homes/gitester/.ssh
touch /var/services/homes/gitester/.ssh/authorized_keys
ls -la /var/services/homes/gitester/
sudo chown gitester -R /var/services/homes/gitester/.ssh/
# 这里被群晖给git user分配直接用git-shell登录迷惑了,试验各种方案花了些时间,最后发现直接修改下面这一项就够,最简单的方案
sudo vi /etc/ssh/sshd_config
# 把下面这行的注释取消后保存,
-----------------------------------------------------------------------
PubkeyAuthentication yes
-----------------------------------------------------------------------
sudo systemctl restart sshd


客户端Git bash:
# 这条命令紧跟三个回车即可生成密钥文件
ssh-keygen -t ecdsa
# 这条命令是把公钥文件的内容写到群晖服务器的对应位置,由于群晖没开SSH文件传输,干脆直接贴过去
cat ~/.ssh/id_ecdsa.pub | ssh farseer@192.168.31.16 "cat >> /var/services/homes/gitester/.ssh/authorized_keys"
# 这时再执行Git操作可以不用密码了
git pull

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
