好的。我试图建立一个docker容器的应用程序,我们在工作中经常使用,和作为构建过程的一部分,docker需要克隆我们公司拥有的某些私有git存储库的内容。
现在,在启动docker构建过程之前(使用docker-compose…)我过去可以完全访问这些存储库,这些存储库是通过一对公共/私有SSH密钥设置的。例如,执行像
这样的命令ssh -Tvvv git@gitlab.main-company-repo.com
产生了诸如"身份验证成功(公钥)"之类的输出消息。我可以在我的本地存储库中使用所有常用的git命令(拉,推…),没有任何问题。
在我为我们的专有应用程序启动docker构建过程后,这种情况发生了变化。构建本身是不成功的,给出了一个错误消息(出于隐私目的更改了确切的消息):
Failed to execute git clone --no-checkout 'ssh://git@gitlab.main-company-repo.com:7000/zs-payments.git'
'/srv/www/zs/payment' && cd '/srv/www/zs/payments' && git remote add composer
'git@gitlab.main-company-repo.com:7000/zs-payments.git' && git fetch composer
Cloning into '/srv/www/zs/payments'...
ssh: connect to host git@gitlab.main-company-repo.com:7000: Connection refused
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我假设"连接被拒绝";部分问题来自于我没有从Docker容器内正确设置SSH密钥认证的事实。这是一个已经在StackOverflow上讨论过的话题,例如
在docker容器中使用SSH密钥
然而,目前我对这个问题不感兴趣!我真正的问题是,在失败的docker构建过程(以及相关的"拒绝连接")之后;问题),我根本无法访问我公司的git存储库!例如,执行上面给出的ssh测试命令(ssh -Tvvv…)现在会导致错误消息(同样,出于隐私目的更改了确切的消息)
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug1: Reading configuration data C:\Users\user_name/.ssh/config
debug3: Failed to open file:C:/ProgramData/ssh/ssh_config error:2
debug2: resolving "gitlab.main-company-repo.de" port 7000
debug2: ssh_connect_direct
debug1: Connecting to gitlab.main-company-repo.de [85.xxx.xx.11] port 7000.
debug3: finish_connect - ERROR: async io completed with error: 10060, io:000001EDA40D7590
debug1: connect to address 85.xxx.xx.11 port 7000: Connection timed out
ssh: connect to host gitlab.main-company-repo.de: Connection timed out
同样,在docker构建过程之前,像pull和push这样的git命令在我的本地存储库中工作得很好,现在给出了相同的"连接超时";错误。
重新启动计算机并不能解决这个问题,也就是说,重新启动后存储库对我来说是不可用的。有一件事(在一段时间内)确实有帮助,那就是切换到另一个网络。在从我最初使用的WLAN网络切换到我的移动服务提供商的互联网(通过USB-Tethering)之后,问题消失了一点,我可以再次访问存储库。但是在再次构建docker(以相同的错误信息结束)之后,相同的"连接超时"。随着"手机互联网"的出现,事情发生了变化。我在两个网络上都无法使用这些存储库。
有人知道这里可能发生了什么吗?换句话说,从Docker容器内失败的git登录尝试(使用SSH密钥)如何导致我被"锁定"?在所有(以前可用的)repos中,以这样一种方式重新启动机器没有帮助(但切换到另一个网络有帮助)?这可能是某种防火墙问题,我的登录尝试git已被标记为潜在威胁?
任何提示和/或建议什么可能会发生在这里将是非常欢迎!在这种情况下,这可能很重要,这一切都发生在Windows 10机器上。
另外(我刚刚想起这一点),在有问题的存储库上运行ping命令,即
ping 85.xxx.xx.11 7000
给出错误信息
ping: sendmsg: Network is unreachable
ping命令是在Windows中基于web的Ubuntu上运行的。再次,在这方面的任何帮助将非常感激!
问题最终以一种出乎意料的方式得到了解决。在我发布这个问题后不久,公司里的其他人开始有类似的问题,他们的git命令以相同的"连接超时"结束。错误消息。这似乎只影响静态IP地址的用户,也发生在那些不使用任何类型的docker容器构建的人身上。
事实证明(至少我被告知)git防火墙将我们的IP地址列入黑名单,将我们的访问企图指定为潜在威胁。公司负责这些事务的人已经设法将我们的ip从黑名单中删除,从那以后一切都很顺利。我们仍然不知道为什么会发生这种情况,以及在指定我们的活动为"不受欢迎的"时使用了什么样的标准。如果将来有更多关于这方面的信息,我会贴在这里,这样其他人就可以避免类似的情况。