全球主机交流论坛

标题: 自建gitlab,如何创建一个公开的git ssh用户 [打印本页]

作者: litter123    时间: 2018-1-19 20:24
标题: 自建gitlab,如何创建一个公开的git ssh用户
希望能实现像github一样,能通过ssh直接git clone的同时,还要权限控制(禁止访问危险的shell,禁止访问私有目录)

现在遇到了几个问题:

1、原生的git用户,有密码,需要登录

2、去掉密码,允许无密码登录,替换默认shell成git-shell,此时权限失控,git clone能clone private项目

大佬们知道怎么解吗?或者有什么教程吗?
作者: dvbhack    时间: 2018-1-19 20:24
gitlab安装以后,用gitlab-shell作为git用户的默认shell就行了
作者: wuting0122    时间: 2018-1-19 20:30
用 gitolite 吧
作者: litter123    时间: 2018-1-19 21:25
wuting0122 发表于 2018-1-19 20:30
用 gitolite 吧

我查了一下,貌似这东西太老了,gitlab使用新的gitlab-shell来代替
作者: litter123    时间: 2018-1-19 21:35
dvbhack 发表于 2018-1-19 21:29
gitlab安装以后,用gitlab-shell作为git用户的默认shell就行了

没错,我也是这么想的,但是

用了以后,git push/clone/pull的时候会显示:

protocol error: bad line length character: Welc

我的passwd是这么写的:

git:x:496:495::/data/git/repositories:/opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell
作者: Mishaelre    时间: 2018-1-19 21:55
问题没遇到过,但是还是帮忙顶,嘿嘿
这个在github上可以搜到解决的吧
作者: laucenmi    时间: 2018-1-19 22:33
gogs 简单方便
作者: hawk    时间: 2018-1-19 22:38
还是喜欢gerrit
作者: kingjci    时间: 2018-1-19 22:51
Gitlab不好用,用gitea
作者: dvbhack    时间: 2018-1-20 00:19
没必要放弃啊,官方文档很细致,一步一步跟着走下去就行了,其中包括了git用户的创建和权限设置。我当初自建gitllab,感觉很容易啊
作者: dvbhack    时间: 2018-1-20 00:44
https://about.gitlab.com/installation/

按这个搞,不需要你自己来处理git用户
作者: cnly1987    时间: 2018-1-20 01:24
gogs
作者: dabiantai    时间: 2018-1-20 05:57
没有看懂你想实现啥功能
不过我的passwd是
git:x:998:998::/var/opt/gitlab/:
shadow是
git::17228:0:99999:7:::

调起gitlab-shell不是通过passwd配置的,是在git用户主目录/.ssh/authorized_keys里,长这样
command="/xxx/xxx//gitlab-shell key-8",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa xxxxxxx
如果你没authorized_keys,可以在gitlab的安装目录下
sudo -u git -H bundle exec rake gitlab:shell:setup RAILS_ENV=production force=yes
作者: dvbhack    时间: 2018-1-20 09:20
dabiantai 发表于 2018-1-20 05:57
没有看懂你想实现啥功能
不过我的passwd是
git:x:998:998::/var/opt/gitlab/:

chsh -s /bin/gitlab-shell git

一行命令就搞定的事。把gitlab-shell的路径换成自己的。
作者: litter123    时间: 2018-1-20 10:07
dvbhack 发表于 2018-1-20 09:20
chsh -s /bin/gitlab-shell git

一行命令就搞定的事。把gitlab-shell的路径换成自己的。 ...

来迟了,折腾了十多个小时,没搞定,卸了
作者: dvbhack    时间: 2018-1-20 11:16
litter123 发表于 2018-1-20 10:07
来迟了,折腾了十多个小时,没搞定,卸了

你用官方的 Omnibus 包安装,不需要自己干什么,机器配置好的话10来分钟就搞定了
作者: litter123    时间: 2018-1-20 11:22
dabiantai 发表于 2018-1-20 05:57
没有看懂你想实现啥功能
不过我的passwd是
git:x:998:998::/var/opt/gitlab/:

大佬,你的gitlab可以在ssh下,git clone git@xxxxx,不需要密码吗?
作者: dvbhack    时间: 2018-1-20 11:25
当然啊,你需要创建用户,用户在自己的面板里上传pubkey啊
作者: litter123    时间: 2018-1-20 11:35
dvbhack 发表于 2018-1-20 11:25
当然啊,你需要创建用户,用户在自己的面板里上传pubkey啊

所以我想像github那样,可以匿名在ssh下git clone啊
作者: litter123    时间: 2018-1-20 13:43
dvbhack 发表于 2018-1-20 11:25
当然啊,你需要创建用户,用户在自己的面板里上传pubkey啊

我当然知道用key pair不用密码,但是我是想像github那样,根本不需要任何东西啊
作者: dvbhack    时间: 2018-1-20 14:59
本帖最后由 dvbhack 于 2018-1-20 15:01 编辑
litter123 发表于 2018-1-20 11:35
所以我想像github那样,可以匿名在ssh下git clone啊


github你如果不先上传pub key,你也不能push。

如果是clone,你的gitlab设为完全开放的项目当然就可以了。它默认是站内开放。

如果不需要那些丰富的功能。我连gitlab都不用装。只要装了git,自己配置一下都能实现git匿名clone.

git本身就是分布式版本管理,不需要单独配置服务器。你所需要的,是正确配置用户权限和版本库的读写权限。
作者: litter123    时间: 2018-1-20 15:01
dvbhack 发表于 2018-1-20 14:59
github你如果不先上传pub key,你也不能push。

如果是clone,你的gitlab设为完全开放的项目当然就可以了 ...

完全开放是要怎样?光项目设置为开放之外,还要设置什么啊?

https是能Clone的,但是我想像github那样,ssh也能匿名clone
作者: dabiantai    时间: 2018-1-22 15:32
litter123 发表于 2018-1-20 15:01
完全开放是要怎样?光项目设置为开放之外,还要设置什么啊?

https是能Clone的,但是我想像github那样, ...

我没见过能不用key就可以clone的ssh啊
作者: litter123    时间: 2018-1-22 15:39
dabiantai 发表于 2018-1-22 15:32
我没见过能不用key就可以clone的ssh啊

github里面的公开仓库不是都不用key吗?

像这个:

[email protected]:galnetwen/Live2D.git
作者: litter123    时间: 2018-1-22 15:41
dvbhack 发表于 2018-1-20 14:59
github你如果不先上传pub key,你也不能push。

如果是clone,你的gitlab设为完全开放的项目当然就可以了 ...

试了很多操作,都不行,大佬有自建的gitlab吗?PM个试试呗
作者: dabiantai    时间: 2018-1-22 15:47
本帖最后由 dabiantai 于 2018-1-22 15:50 编辑
litter123 发表于 2018-1-22 15:39
github里面的公开仓库不是都不用key吗?

像这个:


哦我猜你是说git://协议是吧
git clone [email protected]:gogits/gogs.git 是需要key的,ssh协议,端口是22,相当于git clone ssh://[email protected]:22/gogits/gogs.git
git clone git://github.com/gogits/gogs.git 不需要,git协议,端口是9418,明文的,其实就是http

我记得gitlab木有这功能,但是@dvbhack 也说了,装了git就可以,就用git daemon就可以

或者你可以参考https://blog.christophersmart.com/2016/03/21/providing-git-protocol-access-to-repos-using-gitlab/
作者: gaoji.me    时间: 2018-1-22 15:52
看你们折腾这么久,docker版gitlab毫无压力
作者: litter123    时间: 2018-1-22 17:02
gaoji.me 发表于 2018-1-22 15:52
看你们折腾这么久,docker版gitlab毫无压力

用的话是早就可以用了,只是这个功能我想折腾出来而已,已经在issue提了,看官方能不能弄出来




欢迎光临 全球主机交流论坛 (https://fd.vvwvv.eu.org/) Powered by Discuz! X3.4