2010-07-25 33 views
8

Okulum için web sitesi geliştiriyorum. Bu okulda, kullanıcılarımızı LDAP aracılığıyla doğrularız, bu yüzden aynı şeyi okul sitesi üzerinden yapmanın bir fikri vardı. Bu sitede her şey mükemmel bir şekilde çalışıyor, ancak gelişirken, böyle bir çözümün işe yarayıp yaramadığını test etmek için çok sık ihtiyacım var. Değişikliklerimi sık sık yerine getirmemek için bu siteyi yerel bilgisayarımda test etmek istiyorum, ancak LDAP ile bağlantı kurmak için ssh tüneli kullanmak istiyorum. Okul ağında okul ağımızın içine bağlandığımız cadıyla tek bir sunucumuz var. Adres phoenix.lo5.bielsko.pl. Bu ağın içinde açılmış 389 ve 636 bağlantı noktalarına sahip LDAP sunucumuz var. Adresi auth.lo5. SSH üzerinden auth.lo5 erişimim yok, yalnızca bazı LDAP girişleri almak için onunla bağlantı kurabilirim. Yani, çalıştırarak SSH tüneli çalıştırmayı denedim: SonraPHP diğer ağlarda SSH tüneli üzerinden LDAP'a bağlan

ssh -L 636:auth.lo5:636 [email protected] 

, ben /etc/hostsauth.lo5 o 127.0.0.1 işaret ediyor benim de kurdum.

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

Ama hatayı Can't contact LDAP server alıyorum: Ben öyle bir şekilde PHP LDAP'a bağlıyorum. Bence, bu sorun SSH daemon yapılandırmasında phoenix.lo5.bielsko.pl veya ldap_connect() işlevine aktarılan argümanlarda olabilir. Sshd_config dosyasında veya çalışmam için ldap_connect'a geçen argümanlarda ne ayarlamalıyım?

Aynı soruyu similar thread'da yayınladım, ancak hiç kimse sorumu yanıtlamadı.

P.S. Benim /etc/ssh/sshd_config ben sahip satır AllowTcpForwarding yes

+0

LDAP komut satırı araçlarını kullanırsanız, çalışır mı? Önce ldapwhoami -H ldaps: // auth.lo5' kullanmayı deneyin. - PHP, komut satırı LDAP yardımcı programları olarak birçok yardımcı mesajı bildirmiyor. – Borealid

+0

@Borealid, LDAP sunucumuz anonim olarak bağlanmasına izin vermez, bu yüzden ldapwhoami -D cn = lo5-www, ou = hizmetler, dc = auth, dc = lo5 -W -H ldaps: // auth yazdım .lo5' ve phoenix yanıtı 'dn: cn = lo5-www, ou = hizmetler, dc = auth, dc = lo5', ancak masaüstümde' ldap_sasl_bind (SIMPLE): LDAP sunucusuyla iletişim kurulamıyor (-1) ' – Hfaua

+1

Komut satırı araçları işe yarayana kadar SSH tüneliniz çalışmıyor. Kullandığınız komut spot-on olduğundan (ve dürüstçe, ben * etkilendim * bunu nasıl yapacağınızı biliyorsunuz - SSH tünellemesi karmaşık!), Sadece bir öneri daha var. Yerel bağlantı noktası için ayrıcalıklı olmayan bir bağlantı noktasını (1024'ten yüksek) kullanmayı deneyin ('ssh -L 9999: auth.lo5.bielsko.pl: 636' gibi). Ayrıca bir FQDN belirtin! Yine de komut satırı araçlarıyla test edin. Ve phoenix.lo5'ten auth.lo5'e kadar çalıştıklarından emin olun! – Borealid

cevap

0

localhost ile auth.lo5 tüm örneklerini değiştirmeyi deneyin: Bu işe yaramazsa

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

, yani çalışıp çalışmadığını görmek için SSL kapatmayı deneyin:

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

+0

Her iki çözüm de çalışmıyor. Sanırım, ssh komutlarında localhost olmamalı, çünkü LDAP sunucusuna 'localhost' değil 'auth.lo5' ile değil anka kuşu için ulaşılabilir. 'localhost' anka kuşuna işaret ediyor. Belki müşteri veya sunucu ssh-config'larına bir şey koymak zorundayım? – Hfaua

1

Doğru anladım eğer phoenix.lo5 ve auth.lo5 2 farklı makinedir. Öyleyse, ssh makinesine bir tünel oluşturmanız ve ardından ldap sorgularını doğru makineye göndermeniz gerekir.

hakimiyetin: Dahili IP adresi kullanmak zorunda değilse phoenix.lo5.bielsko.pl, DNS veya/etc/hosts aracılığıyla auth.lo5 çözebilirsiniz doğru olmadığını ssh -L 636:auth.lo5:636 [email protected] olduğunu. Eğer pc bağlantı noktasını 636 kullanmak istiyorsanız

Ayrıca, başka

Borealid

belirttiği gibi (1024 üstü) bir yüksek noktasını kullanmak gerekir süper (root ya da sudo ile) olarak komutu çalıştırmak için gereken Tünel bittiğinde,

+0

Elbette 'phoenix' ve 'auth' farklı makinelerdir ve adlarını çözmek için DNS'imizi kullanırız. Sanırım, adresler burada gerçek sorun değil. Tünel üzerinden gerçek bir bağlantı olup olmadığını ve eğer ldapwhoami'nin paketleri doğru gönderdiklerini kontrol etmek için tcpdump 'kullandım. Sonuç kafa karıştırıcıydı: 'local = [tunnel] => phoenix => auth (LDAP sorgulama) => phoenix = [tunnel] => local', bu yüzden ldapwhoami'nin doğru cevabı vermesi gerektiğini düşünüyorum ama hata alıyorum ldap_sasl_bind (SIMPLE): LDAP sunucusuyla (-1) iletişim kuramıyor. Ben phoenix üzerinde sudo var, 1024 altındaki portlar sorun değil, bence. Onun tuhaf olduğunu düşünmüyor musun? – Hfaua

+0

Aynı konuya çarpıyorum. Şu anki düşüncem SSL el sıkışmalarının başarısız olmasıdır. Ana bilgisayar adını taklit etmek için bir yerel/etc/hosts girdisi kullanmayı denedim, ancak henüz çalışmadı. –

1

sorgularını yapmak için localhost'a işaret etmeniz gerekir.

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

Eğer benzer bir sorun düşüyoruz olabilir: -d1 ile Koşu bana bu hatayı gösterdi.

Ben dışarı çalıştırarak sahte başardı:

sudo hostname someserver.mydomain.com

SSL doğru ev sahibi konuşuyordu varsaymak neden oldu.