我有一台 Windows 机器 (LOCAL)、一个 Centos 7 VM (VM) 和一个 LDAP (LDAP),我需要通过 VM 进行通信。
LOCAL 可以 ssh 进入 VM,并且可以独立与 LDAP 通信。
VM 无法直接与 LOCAL 或 LDAP 通信
我在 LOCAL 上执行了一个命令,例如
ssh -R 389:LDAP:389 VM
现在在虚拟机内我可以做
curl ldap://localhost/...
,提供身份验证,并且它几乎可以工作。返回适当的响应,但连接挂起。
为什么它挂了,我该如何解决这个问题?我可以完全控制 VM,可以部分控制 LOCAL,但不能控制 LDAP。我无法控制与我交谈的任何基础设施。
我希望能够做到这一点,因为我正在许多虚拟机上部署 openshift 集群,openshift 应该通过特定的 ldap 进行身份验证。使用当前配置(curl 挂起),与 ldap 的集成无法正常工作。我已经将 openshift 与我在虚拟机能够与之通信的网络上旋转的 ldap docker 映像集成在一起,并且运行良好,让我相信这个挂起是导致问题的原因。
如果我在一台运行 ldap 的机器上,那么我可以这样做
ssh -R 400:localhost:389 localhost
此时
curl ldap://localhost:400/...
工作正常(无悬挂)
这有点神秘
答案1
解决了这个问题,卷曲时的挂起实际上是有关卷曲和特定 ldap 设置的一些常见问题。
https://github.com/curl/curl/issues/622
出现这种情况时:
您的 curl 安装使用的 ldap 后端是 openldap:Debian 上可能就是这种情况。查询是针对返回推荐的服务器进行的:M$AD 就是其中之一 :-( 外部 ldap 配置允许自动推荐追踪。目前还没有简单的方法支持 curl 中的自动推荐追踪。作为一种解决方法,我建议您通过 ldap 配置禁用此功能(ldap.conf 中的“REFERRALS off”):这将释放挂起。当然,这也会错过来自推荐的结果,但在当前 curl 的状态下,无论如何都不会返回它们。
更多细节:https://curl.haxx.se/mail/lib-2016-01/0101.html
由于不相关的网络问题,Openshift 无法与 ldap 配合使用