PHP Verbindung über SSH-Tunnel zu LDAP in anderen Netzwerk

8

Ich entwickle Website für meine Schule. In dieser Schule authentifizieren wir Benutzer über LDAP, also gab es eine Idee, das gleiche über die Schule zu tun. Auf dieser Seite läuft alles perfekt, aber während der Entwicklung muss ich sehr oft testen, ob eine solche Lösung funktioniert, oder nicht. Um meine Änderungen nicht so oft zu begehen, möchte ich diese Seite auf meinem lokalen Computer testen, aber für die Verbindung mit LDAP möchte ich ssh tunnel verwenden. Im Schulnetzwerk haben wir einen Server durch den wir mit unserem Schulnetzwerk verbunden sind. Die Adresse lautet phoenix.lo5.bielsko.pl . In diesem Netzwerk haben wir einen LDAP-Server mit geöffneten 389 und 636 Ports. Die Adresse lautet auth.lo5 . Ich habe keinen Zugriff auf auth.lo5 über SSH, ich kann mich nur mit ihm verbinden, um einige LDAP-Einträge zu erhalten. Also habe ich versucht, den SSH-Tunnel zu starten, indem ich folgendes ausführe:

%Vor%

Dann habe ich in meinem /etc/hosts festgelegt, dass auth.lo5 auf 127.0.0.1 zeigt. Ich verbinde mich in PHP so mit LDAP:

%Vor%

Aber ich bekomme den Fehler Can't contact LDAP server . Ich denke, dieses Problem könnte auf phoenix.lo5.bielsko.pl in seiner SSH-Daemon-Konfiguration oder in an ldap_connect() function übergebenen Argumenten liegen. Können Sie mir sagen, was ich in sshd_config oder in an ldap_connect übergebenen Argumenten einstellen soll, damit es funktioniert?

Ich habe dieselbe Frage im ähnlichen Thread gestellt, aber niemand hat geantwortet meine Frage.

P.S. In meinem /etc/ssh/sshd_config habe ich die Zeile AllowTcpForwarding yes

    
Hfaua 25.07.2010, 13:10
quelle

3 Antworten

1

Wenn ich es richtig verstanden habe, sind phoenix.lo5 und auth.lo5 zwei verschiedene Maschinen. Wenn dies der Fall ist, müssen Sie einen Tunnel für die SSH-Maschine erstellen und dann die LDAP-Abfragen an die richtige Maschine senden.

Ihr Befehl: ssh -L 636:auth.lo5:636 [email protected] ist richtig, wenn phoenix.lo5.bielsko.pl auth.lo5 über DNS oder / etc / hosts auflösen kann, wenn Sie nicht seine interne IP-Adresse verwenden müssen.

Auch wenn Sie Port 636 auf Ihrem PC verwenden möchten, müssen Sie Ihren Befehl als Superuser (root oder mit sudo) ausführen, sonst müssen Sie einen hohen Port (über 1024) verwenden, wie von Borealid

angegeben

Sobald der Tunnel hochgefahren ist, müssen Sie auf localhost zeigen, um die Abfragen auszuführen

    
Manuel Dalla Lana 26.07.2010 18:54
quelle
1

Ich bin auf dasselbe Problem gestoßen. Laufen mit -d1 zeigte mir diesen Fehler:

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

Könnten Sie ein ähnliches Problem haben.

Ich konnte es durch Ausführen von:

fälschen

sudo hostname someserver.mydomain.com

was bewirkt hat, dass SSL annimmt, dass es mit dem richtigen Host gesprochen hat.

    
Mat Schaffer 13.01.2015 21:43
quelle
0

Versuchen Sie, alle Instanzen von auth.lo5 durch localhost:

zu ersetzen

ssh -L 636:localhost:636 [email protected] und ldap_connect('ldaps://localhost', 636);

Wenn das nicht funktioniert, versuchen Sie, SSL auszuschalten, um zu sehen, ob das funktioniert:

ssh -L 389:localhost:389 [email protected] und ldap_connect('localhost', 389);

    
Charles 25.07.2010 15:43
quelle

Tags und Links