群晖NAS 搭建GitServer并配置权限与SSH秘钥免密登陆

一、序言
公司长期使用SVN作为版本管理仓库,并且没有使用分支管理,在开发与发布时遇到了很多问题.后来配置了Jenkins自动化出版本,在开发与发布中需要进场切换版本. 综合考虑,最终决定在内网NAS上搭建一个Git远程仓库.
NAS是Linux内核的操作系统,所以需要一定Linux命令操作的基础.查阅大量资料并实践,最终整理成这一篇文章.

二、环境配置

  1. 群晖NAS (我们使用的非Plus版本,不支持docker安装GitLab,只能使用GitServer)
  2. NAS管理员权限
  3. SSH客户端,xshell或者putty

三、开始配置

  1. 安装GitServer
    在群晖NAS的套件中心安装GitServer,这一步非常简单
    在这里插入图片描述

  2. 创建一个共享目录用于存放Git仓库,并设置访问权限

  3. 创建仓库目录
    在这里插入图片描述

  4. 创建一个用户群组,并设置访问权限
    在这里插入图片描述
    在这里插入图片描述

  5. 新建用户并加入git_group
    在这里插入图片描述
    在这里插入图片描述

  6. 在GitServer中添加用户访问权限
    在NAS的主程序中打开GitServer,并添加刚刚创建的用户访问权限
    在这里插入图片描述

  7. 打开用户账户中的家目录
    打开家目录有两个作用

  8. 解决用户通过ssh访问的时候会提示目录不存在的问题

  9. 可以为用户配置SSH秘钥,实现免密登陆
    在这里插入图片描述

  10. 开启SSH远程访问功能

在这里插入图片描述

走到这一步,NAS可以通过页面设置的部分都处理完成,接下来我们需要用过SSH远程连接NAS,通过命令来创建Git仓库

四、创建Git仓库
使用xshell/putty等工具连接NAS,需要用管理员账号登陆

sudo -i  							//切换管理员权限
cd cd /volume1/gittest   			//进入刚刚创建的共享目录中
mkdir res.git						//创建仓库	
cd res.git
git init --bare 					//初始化git仓库

在这里插入图片描述

  1. 配置设置文件归属和权限
    至此,git仓库已经创建好,但是我们并不能正确访问到,因为目录还有访问权限,我们需要将gittest目录下所有文件的访问权限修改为当前用户可以访问
cd /volume1 
chown -R root:git_group gittest			//修改gittest文件及其子目录的归属用户和组
cd 

五、使用Git与配置ssh秘钥

  1. 接下来我们可以使用git来拉取NAS上的仓库了
git clone ssh://gittest_user@192.168.2.55/volume1/gittest/res.git

如果提示 Could not chdir to home directory /var/services/homes/gittest_user: Permission denied
warning: You appear to have cloned an empty repository.
我们需要将/var/service的权限修改一下

chmod 775 /var
chmod 775 /var/services
chmod 755 -R /var/services/homes										//homes以及子目录的权限必须为755
  1. 配置ssh秘钥
    这里使用git拉取,推送每次都需要使用密码,我们可以创建秘钥来实现免密ssh登陆
  2. 允许ssh使用秘钥验证
sudo vim /etc/ssh/sshd_config

解开以下几行的注释,并退出保存

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

接着重启 ssh 服务

sudo synoservicectl --restart sshd

或者在NAS网页控制台中重新关闭,打开ssh设置
2. 生成秘钥
在客户端主机中执行以下命令(我使用的git bash)

ssh-keygen -t rsa -f ./gittest_user    //-f 指定秘钥文件路径和名称

在这里插入图片描述

此时我们就得到了两个文件
在这里插入图片描述

  1. 上传公钥文件到NAS
    客户端执行以下命令(git bash)
scp ./gittest_user.pub username@192.168.2.55:/volume1/homes/gittest_user/.ssh

这个时候我们上传不了文件到NAS中,提示没有权限,这是因为NASgittest_user 目录下的权限是755

scp: /volume1/homes/gittest_user/.ssh//gittest_user.pub: Permission denied

只有临时把NAS的 /volume1/homes/gittest_user 目录权限改为777,上传之后再修改回来

上传成功之后,使用xshell执行:

cd /volume1/homes/gittest_user/.ssh/
cat gittest_user.pub > authorized_keys
chmod 755 authorized_keys	
  1. 客户端私钥转换
    因为 TortoiseGit 和SourcesTree 使用的是ppk格式的私钥,我们需要把pem私钥转换成ppk私钥

打开PuTTY Key Generator,并导入pem私钥
在这里插入图片描述

点击 Save private key 保存ppk格式的私钥

  1. 使用TortoiseGit重新拉取
    在这里插入图片描述

现在每次拉取推送都不再需要输入密码了

参考:
https://blog.csdn.net/kaulctin/article/details/68080043
https://dryyun.com/2019/01/08/synology-nas-login-with-ssh-key/

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值