git - 从 docker 容器内尝试登录失败后 Git 存储库无法访问
问题描述
好的,所以。我正在尝试为我们在工作中经常使用的应用程序构建一个 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 构建过程(以及相关的“连接被拒绝”问题)之后,我根本无法访问我公司的 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
同样,像 pull 和 push 这样的 git 命令在 docker 构建过程之前曾经在我的本地存储库中工作得非常好,现在给出了相同的“连接超时”错误。
重新启动计算机并不能解决问题,即在重新启动后,我也无法使用存储库。DID 帮助的一件事(有一段时间)是切换到另一个网络。从我最初使用的 WLAN 网络从我的移动服务提供商(通过 USB-Tethering)切换到 Internet 后,问题暂时消失了,我可以再次访问存储库。但是在再次进行 docker build 之后(以相同的错误消息结束),“手机互联网”会发生相同的“连接超时”事情,并且两个网络上的存储库都对我不可用。
有谁知道这里可能发生什么?换句话说,如何从 Docker 容器中尝试不成功的 git 登录尝试(使用 SSH 密钥)导致我被“锁定”在所有(以前可用的)存储库中,并且重新启动机器无济于事(但切换到另一个网络呢)?这可能是某种防火墙问题,我的 git 登录尝试已被标记为潜在威胁?
任何关于这里可能发生的事情的提示和/或建议都将非常受欢迎!如果它可能很重要,这一切都发生在 Windows 10 机器上。
另外(我只记得这一点),在有问题的存储库上运行 ping 命令,即
ping 85.xxx.xx.11 7000
给出错误信息
ping: sendmsg: Network is unreachable
ping 命令是在 Windows 中基于 WSL 的 Ubuntu 上运行的。再次,在这方面的任何帮助将不胜感激!
解决方案
问题最终以一种有点出乎意料的方式解决了。在我发布这个问题后不久,公司的其他人开始遇到类似的问题,他们的 git 命令以相同的“连接超时”错误消息结尾。这似乎只影响具有静态 IP 地址的用户,也发生在那些没有使用任何类型的 docker 容器构建。
事实证明(或者至少我被告知)git firewall 将我们的 IP 地址列入黑名单,将我们的访问尝试指定为潜在威胁。公司负责这些事情的人已经设法将我们的IP从黑名单中删除,此后一切顺利。我们仍然不知道为什么会发生这种情况,以及 git 在将我们的活动指定为“不需要的”时使用了什么样的标准。如果将来有更多关于此的信息,我会在这里发布,以便其他人可以避免类似情况。
推荐阅读
- r - 如何将标签添加到多个 ggplot 图(A、B、C)
- elasticsearch - 如何在 kafka-connect 融合平台的 elasticsearch sink 连接器配置中使用 ca cert?
- apache-spark - 编写数据帧时从 Spark 到数据库的连接有多少?
- python - 用户输入问题
- visual-studio-code - 在VScode中,如何在launch.json中添加带有$的参数
- pyodbc - 如何使用 pyodbc 接口连接计算表
- vue.js - 带有 Vue 的 Apache ECharts 不显示工具提示
- html - 我的 CSS 无法识别滚动捕捉命令
- python - 带有条件的列表列表
- amazon-web-services - 允许基于 EC2 角色的 S3 存储桶操作