首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用ssh克隆gitlab回购程序?

如何利用ssh克隆gitlab回购程序?
EN

Stack Overflow用户
提问于 2021-05-09 19:05:23
回答 1查看 559关注 0票数 1

错误消息

在添加了驻留在tor上的GitLab服务器和存储库的用户的ssh键之后,执行了一个尝试在tor上克隆私有存储库(将测试用户添加到其中)的测试。克隆的尝试是通过命令进行的:

代码语言:javascript
复制
torsocks git clone git@some_onion_domain.onion:root/test.git

返回错误:

克隆成“测试”..。1620581859错误torsocks50856:连接拒绝Tor SOCKS (在SOCKS 5.c:543处的socks5_recv_connect_reply() ) ssh:连接到主机some_onion_domain.onion端口22:连接拒绝致命:无法从远程存储库读取。 请确保您有正确的访问权限和存储库存在。

GitLab SSH克隆验证

但是,为了验证测试用户是否可以使用ssh访问,在不使用tor命令的情况下验证了克隆:

代码语言:javascript
复制
git clone git@127.0.0.1:root/test.git

成功返回:

克隆成“测试”..。远程:枚举对象: 3,完成。远程:计数对象: 100% (3/3),完成。远程:总计3(增量0),重用0(增量0),包重用0接收对象: 100% (3/3),完成。

服务器端假设

  • 我的第一个猜测是,这是一个服务器端问题,与缺少https有关,在/etc/gitlab/gitlab.rb文件中设置如下:
代码语言:javascript
复制
external_url 'http://127.0.0.1'​

然而,设置external_url 'https://127.0.0.1需要一个https证书,例如“让我们加密”,这似乎不是为洋葱域提供的。

客户端假设

  • 我的第二个猜测是,这是一个与某些SOCKS设置相关的客户端问题,在运行torsocks命令的测试用户端是不正确的,类似于w.r.t问题。似乎被描述为SOCKS 5这里协议。

问题

因此,我想问:

当用户试图克隆回购程序时,如何解决connect to host some_onion_domain.onion port 22: Connection refused错误?

EN

回答 1

Stack Overflow用户

发布于 2021-06-13 19:00:26

可以将GitLab实例的ssh端口设置为9001,例如:

代码语言:javascript
复制
sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 22:9001 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  gitlab/gitlab-ee:latest

接下来,通过添加以下内容,将端口9001和端口22添加到/etc/ssh/sshd_config中的ssh配置:

代码语言:javascript
复制
Port 9001
Port 22

然后使用:systemctl restart ssh重新启动ssh服务。

对于您想要从GitLab服务器下载回购文件的每台计算机,都必须向服务器添加一个公共ssh密钥,即使您希望克隆一个公共存储库。您可以为每台计算机创建一个新的GitLab帐户,也可以将多个公共ssh键添加到单个GitLab帐户中。这些指示解释了怎么做,tl;dr .

代码语言:javascript
复制
ssh-keygen -t ed25519
<enter>
<enter>
<enter>
systemctl restart ssh
xclip -sel clip < ~/.ssh/id_ed25519.pub

Ps。如果xclip不工作,可以用:cat ~/.ssh/id_ed25519.pub手动复制ssh键。

然后打开一个浏览器,然后转到https://gitlab.com/-/profile/keys,对于您自己的tor GitLab服务器来说,这将是:omeoniondomain.onion/-/profile/ key,并将该密钥复制到其中。

就是这样,现在我们可以通过以下方法在tor上克隆存储库:

代码语言:javascript
复制
torify -p 22 git clone ssh://git@someoniondomain.onion:9001/root/public.git

备注

另外,在我碰巧测试了git clone git@127.0.0.1:root/test.git的问题中,我应该使用hostname -I的输出或承载GitLab服务器的设备的公共ip地址,而不是使用GitLab。此外,我应该通过测试来验证GitLab服务器是否可以通过ssh访问:

代码语言:javascript
复制
ssh -T git@youronionserver.onion

它应该返回Congratulations..。如果我对此进行了测试,它就不会这么做了,表明问题在于ssh对GitLab服务器的访问(或设备的ssh连接)。我可以通过测试是否可以使用:ssh deviceusername@device_ip登录到设备上,从而确定ssh问题是与设备还是ssh服务器有关,这将成功地指示GitLab服务器上的ssh问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67461407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档