【发布时间】:2011-03-20 17:55:46
【问题描述】:
我正在为我的学校开发网站。在那所学校,我们通过 LDAP 对用户进行身份验证,因此有一个想法通过学校站点来做同样的事情。在那个网站上,一切都运行良好,但在开发过程中,我需要经常测试这种解决方案是否有效,或者不是。为了不经常提交我的更改,我想在我的本地计算机上测试这个站点,但是为了连接 LDAP,我想使用 ssh 隧道。在学校网络中,我们通过与学校网络内部连接的女巫拥有一台服务器。它的地址是phoenix.lo5.bielsko.pl。在这个网络中,我们有 LDAP 服务器,开放了 389 和 636 端口。它的地址是auth.lo5。我无法通过 SSH 访问auth.lo5,我只能连接它以获取一些 LDAP 条目。所以,我尝试通过运行来运行 SSH 隧道:
ssh -L 636:auth.lo5:636 hfaua@phoenix.lo5.bielsko.pl
然后,我在我的/etc/hosts 中设置了auth.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 的参数中设置什么来让它工作吗?
我在similar thread 中发布了同样的问题,但没有人回答我的问题。
附:在我的/etc/ssh/sshd_config 我有行AllowTcpForwarding yes
【问题讨论】:
-
如果您使用 LDAP 命令行工具,它们是否有效?首先尝试使用
ldapwhoami -H ldaps://auth.lo5- PHP 报告的有用消息不如命令行 LDAP 实用程序那么多。 -
@Borealid,我们的 LDAP 服务器不允许匿名绑定,所以我输入了
ldapwhoami -D cn=lo5-www,ou=services,dc=auth,dc=lo5 -W -H ldaps://auth.lo5,在 phoenix 上的答案是dn:cn=lo5-www,ou=services,dc=auth,dc=lo5,但在我的桌面上是ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1) -
在命令行工具正常工作之前,您的 SSH 隧道尚未启动。由于您使用的命令是即时的(老实说,我印象深刻您知道如何做到这一点 - SSH 隧道很复杂!),我只有一个建议。尝试为本地端口(如
ssh -L 9999:auth.lo5.bielsko.pl:636)使用非特权端口(高于 1024)。还要指定一个 FQDN!不过,使用命令行工具进行测试。并确保它们从 phoenix.lo5 到 auth.lo5 工作!