群晖SSH docker 操作命令 群晖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. 群晖SSH docker 操作命令 群晖ssh登录_ssh

  3. 创建一个共享目录用于存放Git仓库,并设置访问权限
  4. 创建仓库目录
  5. 群晖SSH docker 操作命令 群晖ssh登录_ssh_02

  6. 创建一个用户群组,并设置访问权限
  7. 群晖SSH docker 操作命令 群晖ssh登录_群晖SSH docker 操作命令_03

  8. 群晖SSH docker 操作命令 群晖ssh登录_访问权限_04

  9. 新建用户并加入git_group
  10. 群晖SSH docker 操作命令 群晖ssh登录_glonass_05

  11. 群晖SSH docker 操作命令 群晖ssh登录_glonass_06

  12. 在GitServer中添加用户访问权限
    在NAS的主程序中打开GitServer,并添加刚刚创建的用户访问权限
  13. 群晖SSH docker 操作命令 群晖ssh登录_git_07

  14. 打开用户账户中的家目录
    打开家目录有两个作用
  15. 解决用户通过ssh访问的时候会提示目录不存在的问题
  16. 可以为用户配置SSH秘钥,实现免密登陆
  17. 群晖SSH docker 操作命令 群晖ssh登录_ssh_08

  18. 开启SSH远程访问功能

群晖SSH docker 操作命令 群晖ssh登录_ssh_09

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

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

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

群晖SSH docker 操作命令 群晖ssh登录_glonass_10

  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 指定秘钥文件路径和名称

群晖SSH docker 操作命令 群晖ssh登录_访问权限_11

此时我们就得到了两个文件

群晖SSH docker 操作命令 群晖ssh登录_git_12

  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私钥

群晖SSH docker 操作命令 群晖ssh登录_ssh_13

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

  1. 使用TortoiseGit重新拉取

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

原文链接:https://blog.51cto.com/u_16213645/8053350

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享