invalid image(图片无法加载)

自己在群晖主机上使用Docker搭建了一个gitea的服务,已经使用多年了。主要是用来托管一些自己的代码,或者是和朋友们协同开发搞点事情。但是由于网络拓扑相对较为复杂,git的ssh鉴权功能一直没有解决。

这多年了,一直是用https协议来拉取和推送代码,虽然也能记录账号和密码不需要每次登录,又不是不能用;但是,这终究是没有ssh更好用(更有逼格),这也让人如鲠在喉想起来就不爽。
前段时间正好升级了nas主机,借此机会来研究一番,尝试把gitea的ssh能力搞定他。

1. 创建本地git账户

首先去查阅了gitea的官方指导文档。其中“安装——使用Docker安装——ssh容器直通”条目中有详细的记录,很值的参考。

invalid image(图片无法加载)

文档要求第一步先在主机上创建一个名为git的账户,对于我等多年菜鸟,这还不是和开关机一样简单的事情吗?
打开群晖"控制面板 – 用户与群组" 创建 git 用户。
下一步。
what fuck!居然报错: "出于安全原因禁止创建"。

账号名2不能叫 git就很蛋疼啊,比如创建一个fucker用户,然后你的ssh链接就会变成这样:🔽

##克隆仓库时 SSH 正常协议地址
git@xxxx.com:<username>/<repository name>.git
##如果是 fucker 的话,就成了:
fucker@xxxx.com:<username>/<repository name>.git

你看,这样是不是很别扭?起码逼格少了一半啊。
UI界面不让搞,是不是命令行可以绕过去呢?毕竟群晖也就是个Linux,ssh链接走起:
打开群晖ssh端口,然后ssh登录上去试试,不就是个adduser嘛:
invalid image(图片无法加载)
What Fuck x2!群晖居然没有 useradd 和 adduser命令!!!我感觉整个人都不好了。。。
好吧,李敖大师说过,搞研究的人要有“上穷碧落下黄泉,动手动脚找东西”的精神,那我们也来发扬一下。
终于,在群晖官网的 CLI Administrator Guide 里提到了一个命令 synouser,按照文档中的说明,我执行了下面的命令,成功了创建了 git 用户。

synouser --add git "passwd" "" 0 "" 0

因为 git 用户要将 SSH 连接转发到容器,所以还要去控制面板把 git 添加到 administrators 群组,否则没有权限。
至此拦路虎搞定。

2.修改docker-compose.yaml文件重新部署gitea服务

第一个小问题,按文档需要给容器设置uid和gid,文档中默认的都是1000;

environment:
  - USER_UID=1000
  - USER_GID=1000

我们需要在群晖上通过

id git
## 输出类似这样
uid=1029(git) gid=100(git) groups=100(git),101(users)

来查询出git账号的uid和gid,把yaml文件修改成正确的uid和gid。
然后第二个问题,
文档中提示需要将主机的 /home/git/.ssh 装入容器。否则,SSH 身份验证将无法在容器内运行。

volumes:
  - /home/git/.ssh/:/data/git/.ssh

实际上在群晖上是找不到对应的目录的,群晖自己对Linux目录结构做了很大改动。
实际的git用户home目录是在/var/services/homes/git;所以对应修改yaml文件:

volumes:
  - /var/services/homes/git/.ssh/:/data/git/.ssh

剩下的就不说了,完全安装gitea官方文档抄作业就好了。

3. 搞定,Happy3分钟!

至此,拦路多年的大石头终于搬掉了,可以愉快的使用 git@[servername]:[user]/[demo].git的形式来拉取代码了。

invalid image(图片无法加载)

文章作者: 嘿手大叔
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 i·Space
学习记录 生活琐碎 Gitea 群晖 ssh
喜欢就支持一下吧
打赏
微信 微信
支付宝 支付宝