PHP подключиться через SSH туннель к LDAP в другой сети - PullRequest
8 голосов
/ 25 июля 2010

Я разрабатываю сайт для своей школы. В этой школе мы аутентифицировали пользователей через LDAP, поэтому была идея сделать то же самое через школьный сайт. На этом сайте все работает отлично, но во время разработки мне очень часто приходится проверять, работает ли такое решение, или нет. Чтобы не фиксировать свои изменения так часто, я хочу протестировать этот сайт на своем локальном компьютере, но для соединения с LDAP я хочу использовать ssh tunnel. В школьной сети у нас есть один сервер, через который мы соединяемся внутри нашей школьной сети. Это адрес 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/hosts, что auth.lo5 указывает на 127.0.0.1. Я подключаюсь к LDAP в PHP таким образом:

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

Но я получаю ошибку Can't contact LDAP server. Я думаю, что проблема может быть в phoenix.lo5.bielsko.pl в его конфигурации демона SSH или в аргументах, переданных функции ldap_connect(). Можете ли вы сказать мне, что я должен установить в sshd_config или в аргументах, передаваемых ldap_connect, чтобы он работал?

Я опубликовал тот же вопрос в аналогичной теме , но никто не ответил на мой вопрос.

P.S. В моей /etc/ssh/sshd_config есть строка AllowTcpForwarding yes

Ответы [ 3 ]

1 голос
/ 26 июля 2010

Если я правильно понял, 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-адрес.

Также, если вы хотите использовать порт 636 на вашем компьютере, вам нужно запустить вашу команду как суперпользователь (root или с sudo), иначе вам нужно использовать высокий порт (выше 1024), как указано Borealid

Когда туннель запущен, вы должны указать localhost для выполнения запросов

1 голос
/ 14 января 2015

Я столкнулся с этой же проблемой.Запуск с -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 предположить, что он обращается к нужному хосту.

0 голосов
/ 25 июля 2010

Попробуйте заменить все экземпляры auth.lo5 на localhost:

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

Если это не сработает, попробуйте отключить SSL, чтобы проверить, работает ли это:

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

...