错误消息
在添加了驻留在tor上的GitLab服务器和存储库的用户的ssh键之后,执行了一个尝试在tor上克隆私有存储库(将测试用户添加到其中)的测试。克隆的尝试是通过命令进行的:
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命令的情况下验证了克隆:
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文件中设置如下: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错误?
发布于 2021-06-13 19:00:26
可以将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然后使用:systemctl restart ssh重新启动ssh服务。
对于您想要从GitLab服务器下载回购文件的每台计算机,都必须向服务器添加一个公共ssh密钥,即使您希望克隆一个公共存储库。您可以为每台计算机创建一个新的GitLab帐户,也可以将多个公共ssh键添加到单个GitLab帐户中。这些指示解释了怎么做,tl;dr .
ssh-keygen -t ed25519
<enter>
<enter>
<enter>
systemctl restart ssh
xclip -sel clip < ~/.ssh/id_ed25519.pubPs。如果xclip不工作,可以用:cat ~/.ssh/id_ed25519.pub手动复制ssh键。
然后打开一个浏览器,然后转到https://gitlab.com/-/profile/keys,对于您自己的tor GitLab服务器来说,这将是:omeoniondomain.onion/-/profile/ key,并将该密钥复制到其中。
就是这样,现在我们可以通过以下方法在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地址,而不是使用GitLab。此外,我应该通过测试来验证GitLab服务器是否可以通过ssh访问:
ssh -T git@youronionserver.onion它应该返回Congratulations..。如果我对此进行了测试,它就不会这么做了,表明问题在于ssh对GitLab服务器的访问(或设备的ssh连接)。我可以通过测试是否可以使用:ssh deviceusername@device_ip登录到设备上,从而确定ssh问题是与设备还是ssh服务器有关,这将成功地指示GitLab服务器上的ssh问题。
https://stackoverflow.com/questions/67461407
复制相似问题