【问题标题】:How to clone gitlab repo over tor using ssh?如何使用 ssh 在 Tor 上克隆 gitlab repo?
【发布时间】:2021-06-14 03:00:26
【问题描述】:

错误信息

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

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

返回错误:

正在克隆到“测试”... 1620581859 ERROR torsocks[50856]:连接 拒绝 Tor SOCKS(在 socks5.c:543 的 socks5_recv_connect_reply() 中) 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,似乎没有为洋葱域提供。

客户端假设

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

问题

所以我想问一下:

当用户尝试通过 tor 克隆 repo 时,我该如何解决 connect to host some_onion_domain.onion port 22: Connection refused 错误?

【问题讨论】:

    标签: ssh gitlab clone tor


    【解决方案1】:

    可以将 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

    必须为您要从中下载存储库的每台计算机添加一个公共 ssh 密钥到 GitLab 服务器,即使您想要克隆公共存储库也是如此。您可以为每台计算机创建一个新的 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,然后复制粘贴该密钥。

    就是这样,现在可以通过 tor 克隆存储库:

    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地址,而不是使用127.0.0.1服务器。此外,我应该通过测试验证 GitLab 服务器是否可以通过 ssh 访问:

    ssh -T git@youronionserver.onion
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      • 2019-01-25
      • 2013-08-07
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多