微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 ssh 在 Tor 上克隆 gitlab 存储库? 错误信息GitLab SSH 克隆验证服务端假设客户端假设问题

如何解决如何使用 ssh 在 Tor 上克隆 gitlab 存储库? 错误信息GitLab SSH 克隆验证服务端假设客户端假设问题

错误信息

添加了 GitLab 服务器和托管在 tor 上的存储库的用户的 ssh 密钥后,执行了一个测试,尝试通过 tor 克隆私有存储库(添加了测试用户)。尝试使用以下命令进行克隆:

torsocks git clone git@some_onion_domain.onion:root/test.git

返回错误

克隆到“测试”... 1620581859 ERROR torsocks[50856]:连接 拒绝 Tor SOCKS(在 socks5_recv_connect_reply() at socks5.c:543) ssh:连接到主机 some_onion_domain.onion 端口 22:连接 拒绝致命:无法从远程存储库读取。

请确保您拥有正确的访问权限和存储库 存在。

GitLab SSH 克隆验证

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

git clone git@127.0.0.1:root/test.git

成功返回:

克隆到“测试”...远程:枚举对象:3,完成。偏僻的: 计数对象:100% (3/3),完成。远程:总计 3(增量 0),重复使用 0 (delta 0),pack-reused 0 接收对象:100% (3/3),完成。

服务端假设

  • 我的第一个猜测是,这是一个服务器端问题,与 https 的缺失有关,/etc/gitlab/gitlab.rb 文件中的以下设置:
external_url 'http://127.0.0.1'​

但是设置 external_url 'https://127.0.0.1 需要 https 证书,例如来自 Let's encrypt,洋葱域似乎没有提供。

客户端假设

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

问题

所以我想问:

用户尝试通过 Tor 克隆存储库时,如何解决 connect to host some_onion_domain.onion port 22: Connection refused 错误

解决方法

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

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 配置中:

Port 9001
Port 22

然后使用以下命令重新启动 ssh 服务:systemctl restart ssh

必须为 GitLab 服务器为每台要从中下载存储库的计算机添加一个公共 ssh 密钥,即使有人想要克隆公共存储库也是如此。您可以为每台计算机创建一个新的 GitLab 帐户,或将多个公共 ssh 密钥添加到单个 GitLab 帐户。 These instructions 解释如何做到这一点,tl;dr

ssh-keygen -t ed25519
<enter>
<enter>
<enter>
systemctl restart ssh
xclip -sel clip < ~/.ssh/id_ed25519.pub

附言。如果 xclip 不起作用,可以使用以下命令手动复制 ssh 密钥:cat ~/.ssh/id_ed25519.pub

然后打开浏览器并转到 https://gitlab.com/-/profile/keys,以便为您自己的 Tor GitLab 服务器:someoniondomain.onion/-/profile/keys,然后将该键复制粘贴到那里。

就是这样,现在可以使用以下命令克隆存储库:

torify -p 22 git clone ssh://git@someoniondomain.onion:9001/root/public.git

注意

作为旁注,在我碰巧测试过的问题中,git clone git@127.0.0.1:root/test.git 但是,我应该使用 127.0.0.1 的输出或公共 IP 地址而不是使用 hostname -I托管 GitLab 服务器的设备。此外,我应该通过测试验证是否可以通过 ssh 访问 GitLab 服务器:

ssh -T git@youronionserver.onion

哪个应该返回 Congratulations..。如果我测试过它就不会这样做,这表明问题在于对 GitLab 服务器的 ssh 访问(或到设备的 ssh 连接)。我可以通过测试我是否可以使用以下命令登录设备来确定 ssh 问题是设备还是 ssh 服务器:ssh deviceusername@device_ip,这将成功指示 GitLab 服务器上的 ssh 问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。