1
shoaly 2020-03-04 18:00:30 +08:00
存数据库不好么, 一定要存成文件
|
2
yuanfnadi 2020-03-04 18:10:23 +08:00 3
|
3
liuguang 2020-03-04 18:45:23 +08:00
估计是实现 ssh 协议就行,不一定要搞真实 Linux 用户
|
5
AngryPanda 2020-03-04 18:51:41 +08:00
@jry 你以为他们没有自研能力吗
|
6
ysc3839 2020-03-04 19:03:26 +08:00 via Android 2
你会提这问题大概是觉得它们没有自己编写任何代码,全都是使用现成的 SSH 服务器,这样的话要实现多用户功能确实挺麻烦的。
但是实际上他们会修改甚至自己实现 SSH 服务器,自然可以对接数据库。 |
7
likexian 2020-03-04 19:29:59 +08:00 3
不搞开发也可以,你也可以。
OpenSSH 搜索 AuthorizedKeysCommand |
8
lc1450 2020-03-04 19:30:06 +08:00
刚看了下自己搭建的 gitlab 它使用的是 git 用户 公钥放在.ssh/authorized_keys
其实从公钥验证就能猜出来 ssh -T [email protected] 每条前面有 command="/xxxx/bin/gitlab-shell" 参数, 这个应该是把处理权交给 gitlab-shell 这是用了和 sshd 同端口的方案, 如果专门给 git 服务开个端口, 那就直接由该 git 服务处理, 公钥想放哪就放哪儿 |
9
ipwx 2020-03-04 19:34:01 +08:00 2
首先,pam 支持 mysql 和 postgres 这种数据库。甚至可以自己写 pam 插件。
https://packages.ubuntu.com/source/xenial/pam-mysql https://packages.ubuntu.com/source/xenial/pam-pgsql 其次,我觉得他们不需要用标准 SSH,自己写一个不就行了? |
10
wuqingdzx 2020-03-04 21:12:44 +08:00 via iPhone 2
怎么感觉这帖子里回帖的有些人阴阳怪气的,知道就回答人家,不知道就闭嘴呗,冷嘲热讽的。v2 什么时候风气变这样了
|
12
lululau 2020-03-04 21:40:17 +08:00
gitlab 开源的。。。看代码不就知道了。。。
|
13
forcecharlie 2020-03-04 23:37:49 +08:00 via iPhone
数据库 keys 表 我们平台 git ssh 服务&鉴权全是我写的
|
14
forcecharlie 2020-03-04 23:47:49 +08:00 via iPhone 3
数据库 keys 表 ,可以使用 golang 或者 libssh 编写 ssh 服务。这要比 openssh authorized_keys ( gitlab 这点做得不行)方案好一些。
具体就是在 ssh 请求 publickey 交互的时候获得用户的 publickey 计算指纹去数据库查。(通常会走 API ) PS:我们平台 git ssh 服务&鉴权全是我写的 https://forcemz.net/git/2019/10/01/ExploreSomeIssuesWithGitHost/ |
17
alphatoad 2020-03-05 08:56:37 +08:00
Libssh/libssh2,很好用
这个规模的公司,还有全球 scale 的需求,不会用现成的实现的 |
18
julyclyde 2020-03-05 10:39:20 +08:00
gitlab 是:
所有 git 用户共用同一个 ssh 用户 authorized_keys 里,每一行 key 都指定 command,在 command 参数里写上 git 用户的名字 |
19
julyclyde 2020-03-05 10:40:54 +08:00
其实上面大部分回答,并不觉得阴阳怪气啊
只是回答的并不是 gitlab 实际的情况而已;脱离 gitlab 这个语境的话,都可以算是可行的做法 |
20
imkerberos 2020-03-05 10:43:33 +08:00
PAM 插件即可,不一定需要真实用户。
|
21
ivyliner 2020-03-05 13:09:37 +08:00
@jry gitlab 是把 key 放到数据库的 keys 这个 table 里面
具体的原理可以看一下 https://github.com/gitlabhq/gitlab-shell select * from keys where title limit 1; -[ RECORD 1 ]------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- id | 2 user_id | 3 created_at | 2016-12-26 07:29:47.71315 updated_at | 2018-03-27 06:38:27.813502 key | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHKN5NtDozWty5/KTa9sVyNWR4LtufJI/nfg2pkZr4qg7KCmoaBQYW/qZXA2aX54SHGpOfcC/hJuGXFOor/HLC2K6uy656k8pb3ps/fYxOhd9yBxfBFvktDnZ/HNpCw9+OBV5WYgpS6oaXLIGNmMP28uMrlx9XdWYjoJEkAUlg7jT+I53kXRSF7KKP2xBXpWTm0tyzI50GBHOg4TMps8fvraG/2Bl6J4R7ZLDmN3bQQ5S1Q/OUGBd+K385bsvwvF/7o3QPZYzrEF0EVjN41b6MUxGT47wAAtgo1HhVBaFDDzad3z4NGhWD+L5wUEhxYSLxqcLFiEvs2hvPc8 title | ym type | fingerprint | 08:66:93:e4:31:20:ac:d3:c6:65:af:a8:b8:6e:7c:13 public | f last_used_at | 2020-03-05 02:35:54.852897 fingerprint_sha256 | \x99af1b54849fe9ced262132b1bbad15b4917d67ba3fc03f13e1a4f679a74c74c |
23
jry OP 感谢大家的回复:
|
24
jry OP 居然回车就发布了咋换行
|
26
jry OP @forcecharlie 很有帮助,写的好详细,🐂🍺
|
27
otakustay 2020-03-05 21:08:50 +08:00 1
我也觉得这个楼里有部分用户的回复语气过于诡异,非常不建议在公开社区,特别是相对严肃的技术讨论场合下,使用“你以为 XXX 吗”这种反问句,都是工程师,有一说有正面上就好了
|