概述

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
本文将介绍如何在群晖安装Git Server并开记SSH访问,及免密登录。

群晖安装Git Server开启SSH访问教程

001安装套件

在群晖套件中心搜索Git会发现只有Git Server和GitLab。GitLab安装最少需要4G内存,平时运行占用内存3.5G,显然太占内存了。所以,这里我们用Git Server来管理我们的代码。点击安装套件即可。

002创建用户组、用户与目录

用具有管理员权限的帐户登录,在File Station文件工作站,新增共享文件夹,名字叫gitRepo
在这里插入图片描述
编辑gitRepo 共享文件夹设置,也不用动,直接点确定就行。
在这里插入图片描述
在控制面板-用户群组,新增用户组,名字叫dev_team
在这里插入图片描述
在控制面板-用户帐号,新增用户,名字叫gituu,并加入我们刚才创建的用户组。向用户授予 Git 存储库共享文件夹的读/写权限。
在这里插入图片描述
在主菜单-Git Server,点击后会弹出Git Server设置页面,钩选我们创建的用户gituu。允许用户通过 git-shell 访问存储库。
在这里插入图片描述

003启动SSH功能

控制面板,高级模式,终端机,钩选启动SSH功能,以便用户可通过 SSH 访问 Git 存储库。
在这里插入图片描述
控制面板,用户帐号,高级设置,钩选启动家目录。解决用户通过ssh访问的时候会提示目录不存在的问题。
在这里插入图片描述

004初始化Git仓库

用具有管理员权限的帐户ssh连接群晖,

# 切换管理员权限
sudo -i

# 进入刚刚创建的共享目录
cd /volume1/gitRepo/

# 创建仓库
sudo git init --bare sample.git

输出

Initialized empty Git repository in /volume1/gitRepo/sample.git/

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库是一个目录通常都以.git结尾。
进去看看

# 进入目录
cd sample.git/
# 显示文件列表
ls -la

在这里插入图片描述

005修改所属用户、所属用户组、用户权限

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:
chown (change owner) : 修改所属用户与组。
chmod (change mode) : 修改用户的权限。

# 查看我们刚刚创建的用户组
cat /etc/group | grep dev_team
# 输出
dev_team:x:65538:gituu
# 查看仓库的详情
ls -la /volume1/gitRepo/

在这里插入图片描述
显然文件及文件夹的所属用户、所属用户组为root,并非我们普通用户可以访问,需要修改。
修改所属用户、所属用户组

# 将当前前目录下的所有文件与子目录的拥有者皆设为 gituu,群体的使用者 dev_team
chown -R gituu:dev_team /volume1/gitRepo

试着访问一下。在win10操作系统有个C:\Users\Administrator\.ssh目录。建议先备份,清空当前目录,减少干扰。鼠标右键,用Git Bash Here。用gituu的密码登录。
在这里插入图片描述
上面的域名是我在路由器上映射的
在这里插入图片描述
在这里插入图片描述
致命,无法从远程存储库中读取。请确保您具有正确的访问权限并且存储库存在。

 chmod -R 775 /volume1/gitRepo

在这里插入图片描述
再次尝试
在这里插入图片描述
成功下载仓库。

007提交更新

# 检测状态
git status
# 生成文件
touch README.md
# 添加文件到本地缓存
git add README.md
# 把缓存的文件提交到本地仓库
git commit -m "first commit"
# 提交到nas
git push
# 从nas拉取更新
git pull

免密码登录

# 进入家目录
cd /volume1/homes/gituu
# 查看是否有.ssh目录
ls -la
# 创建目录
mkdir /volume1/homes/gituu/.ssh
# 将收集到的SSH 公钥粘贴进去,一行一个
vim  /volume1/homes/gituu/.ssh/authorized_keys
# 修改所属用户及用户组
chown -R gituu:dev_team /volume1/homes/gituu

如果没有公钥,使用ssh-keygen -t rsa -C "xxx@163.com" -f /c/Users/Administrator/.ssh/nascc_id_rsa产生公钥私钥对。生成的文件nascc_id_rsa.pub为公钥,粘贴上去。nascc_id_rsa为私钥,自己保管。

设置权限

在这里插入图片描述
用绝对路径也就是

chmod 755 /volume1/homes/gituu
chmod 600 /volume1/homes/gituu/.ssh/authorized_keys
chmod 700 /volume1/homes/gituu/.ssh

修改 sshd_config 配置文件

sudo vim /etc/ssh/sshd_config

修改上述文件中以下几个配置(也就是把前面的井号删除):

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

在群晖控制面板-终端机和 SNMP 关闭再开启 SSH,即可免密登录群晖。
在这里插入图片描述

如果设置成功后为了安全起见,建议在保存好 密钥对(id_rsa 和 id_rsa.pub)的情况下,关闭用密码登录群晖SSH,强制使用密钥对登录群晖SSH。
修改 sshd_config 配置文件:

sudo vim /etc/ssh/sshd_config

修改上述文件中以下配置:

PasswordAuthentication no

其他-Linux权限语法表

#权限rwx二进制
7读 + 写 + 执行rwx111
6读 + 写rw-110
5读 + 执行r-x101
4只读r–100
3写 + 执行-wx011
2只写-w-010
1只执行–x001
0000

参考博文

Git菜鸟教程
廖雪峰 - 搭建Git服务器
Git套件地址
群晖 SSH 公钥免密登录
windows下配置多个git账户

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐