10

我正在为我的学校开发网站。在那所学校,我们通过 LDAP 对用户进行身份验证,因此有一个想法通过学校站点来做同样的事情。在该站点上,一切都运行良好,但是在开发过程中,我经常需要测试这种解决方案是否有效。为了不经常提交我的更改,我想在我的本地计算机上测试这个站点,但是为了连接 LDAP,我想使用 ssh 隧道。在学校网络中,我们通过与学校网络内部连接的女巫拥有一台服务器。它的地址是phoenix.lo5.bielsko.pl。在这个网络中,我们有 LDAP 服务器,开放了 389 和 636 端口。它的地址是auth.lo5。我无法auth.lo5通过 SSH 访问,我只能连接它以获取一些 LDAP 条目。因此,我尝试通过运行以下命令来运行 SSH 隧道:

ssh -L 636:auth.lo5:636 hfaua@phoenix.lo5.bielsko.pl

然后,我设置/etc/hostsauth.lo5指向127.0.0.1. 我以这种方式连接到 PHP 中的 LDAP:

ldap_connect('ldaps://auth.lo5', 636);

但我得到错误Can't contact LDAP server。我认为,该问题可能出phoenix.lo5.bielsko.pl在其 SSH 守护程序配置或传递给ldap_connect()函数的参数中。你能告诉我,我应该在 sshd_config 或传递给它的参数中设置什么ldap_connect才能让它工作吗?

我在类似的帖子中发布了相同的问题,但没有人回答我的问题。

PS在我的/etc/ssh/sshd_config我有行AllowTcpForwarding yes

4

4 回答 4

1

我遇到了同样的问题。运行-d1向我显示了这个错误:

TLS: hostname (mylaptop.local) does not match common name in certificate (*.mydomain.com). TLS reverse lookup of 'localhost' is 'mylaptop.local', checking if that matches the certificate common name

可能是你遇到了类似的问题。

我可以通过运行来伪造它:

sudo hostname someserver.mydomain.com

这导致 SSL 认为它正在与正确的主机通信。

于 2015-01-13T21:43:03.750 回答
1

如果我做对了,phoenix.lo5 和 auth.lo5 是两台不同的机器。如果是这样,您必须创建到 ssh 机器的隧道,然后将 ldap 查询发送到正确的机器。

您的命令:ssh -L 636:auth.lo5:636 hfaua@phoenix.lo5.bielsko.pl如果phoenix.lo5.bielsko.pl可以auth.lo5通过 DNS 或 /etc/hosts 解析,则正确,否则您需要使用其内部 IP 地址。

此外,如果您想在 PC 上使用端口 636,则需要以超级用户(root 或使用 sudo)运行命令,否则您需要使用 Borealid 所述的高端口(1024 以上)

隧道启动后,您必须指向 localhost 进行查询

于 2010-07-26T18:54:48.560 回答
1

我也得到了错误hostname (mylaptop.local) does not match common name in certificate (*.mydomain.com)。但是我不想编辑我的机器的主机名以匹配 LDAP 服务器的主机名。相反,我编辑了 hosts 文件(etc/hosts在 linux 上)文件以添加一行来拦截对 LDAP 服务器的请求,例如:

127.0.0.1 ldap.server.com

这有一个额外的好处,即不需要您在代码中更改您尝试连接的服务器名称,如果您选择了不同的端口,您只需要更改端口号。

于 2019-09-16T16:52:46.203 回答
0

auth.lo5尝试用localhost替换所有实例:

ssh -L 636:localhost:636 hfaua@phoenix.lo5.bielsko.plldap_connect('ldaps://localhost', 636);

如果这不起作用,请尝试关闭 SSL 以查看是否有效:

ssh -L 389:localhost:389 hfaua@phoenix.lo5.bielsko.plldap_connect('localhost', 389);

于 2010-07-25T15:43:34.140 回答