2010-07-25 15 views
8

मैं अपने स्कूल के लिए वेबसाइट विकसित कर रहा हूं। उस स्कूल में हम एलडीएपी के माध्यम से उपयोगकर्ताओं को प्रमाणीकृत करते हैं, इसलिए स्कूल-साइट के माध्यम से ऐसा करने का विचार था। उस साइट पर सबकुछ पूरी तरह से काम कर रहा है, लेकिन विकास के दौरान मुझे अक्सर परीक्षण करने की आवश्यकता होती है कि ऐसा समाधान काम करता है या नहीं। मेरे परिवर्तनों को इतनी बार नहीं करने के लिए मैं अक्सर अपने स्थानीय कंप्यूटर पर इस साइट का परीक्षण करना चाहता हूं, लेकिन एलडीएपी से जुड़ने के लिए मैं एसएस सुरंग का उपयोग करना चाहता हूं। स्कूल नेटवर्क में हमारे पास चुड़ैल के माध्यम से एक सर्वर है जिसे हम अपने स्कूल नेटवर्क के अंदर जोड़ रहे हैं। इसका पता phoenix.lo5.bielsko.pl है। इस नेटवर्क के अंदर हमारे पास 38 9 और 636 बंदरगाहों के साथ एलडीएपी सर्वर है। इसका पता auth.lo5 है। मुझे एसएसएच के माध्यम से auth.lo5 तक पहुंच नहीं है, मैं केवल कुछ एलडीएपी प्रविष्टियों को प्राप्त करने के लिए इसके साथ जुड़ सकता हूं। तो, मैं चलाकर SSH सुरंग को चलाने के लिए कोशिश की है:PHP एसएसएच सुरंग के माध्यम से अन्य नेटवर्क में एलडीएपी से कनेक्ट

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

फिर, मैं अपने /etc/hosts कि auth.lo5127.0.0.1 की ओर इशारा करते है में स्थापित किया है। मैं इस तरह से PHP में एलडीएपी से कनेक्ट कर रहा हूँ:

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

लेकिन मैं त्रुटि Can't contact LDAP server हो रही है। मुझे लगता है कि यह समस्या phoenix.lo5.bielsko.pl पर अपने एसएसएच डिमन कॉन्फ़िगरेशन में हो सकती है या ldap_connect() फ़ंक्शन पर दिए गए तर्कों में समस्या हो सकती है। क्या आप मुझे बता सकते हैं, मुझे sshd_config में क्या सेट करना चाहिए या इसे काम करने के लिए ldap_connect पर दिए गए तर्कों में क्या होना चाहिए?

मैंने उसी प्रश्न को similar thread में पोस्ट किया है, लेकिन किसी ने भी मेरे प्रश्न का उत्तर नहीं दिया है।

पीएस मेरी /etc/ssh/sshd_config में मैं लाइन AllowTcpForwarding yes

+0

यदि आप एलडीएपी कमांड लाइन उपकरण का उपयोग करते हैं, तो क्या वे काम करते हैं? 'Ldapwhoami -H ldaps: // auth.lo5' पहले का उपयोग करने का प्रयास करें - PHP कमांड लाइन LDAP उपयोगिताओं के रूप में कई सहायक संदेशों की रिपोर्ट नहीं करता है। – Borealid

+0

@ बॉरिडाइड, हमारे एलडीएपी सर्वर गुमनाम रूप से बाध्य करने की अनुमति नहीं देते हैं, इसलिए मैंने टाइप किया है 'ldapwhoami -D cn = lo5-www, ou = सेवाएं, डीसी = auth, डीसी = lo5 -W -H ldaps: // auth .lo5' और फीनिक्स उत्तर पर 'dn: cn = lo5-www, ou = services, dc = auth, dc = lo5' है, लेकिन मेरे डेस्कटॉप पर यह 'ldap_sasl_bind (सरल): LDAP सर्वर से संपर्क नहीं कर सकता (-1) ' – Hfaua

+1

कमांड लाइन उपकरण काम करते समय, आपकी एसएसएच सुरंग ऊपर नहीं है। चूंकि आप जिस कमांड का उपयोग कर रहे हैं वह स्पॉट-ऑन है (और, ईमानदारी से, मैं * प्रभावित हूं * आपको पता है कि यह कैसे करें - एसएसएच सुरंग जटिल है!), मेरे पास केवल एक और सुझाव है। स्थानीय बंदरगाह के लिए एक अप्रतिबंधित बंदरगाह (1024 से अधिक) का उपयोग करने का प्रयास करें (जैसा कि, 'ssh -L 9999: auth.lo5.bielsko.pl: 636')। एक एफक्यूडीएन भी निर्दिष्ट करें! फिर भी, कमांड लाइन उपकरण के साथ परीक्षण करें। और सुनिश्चित करें कि वे phoenix.lo5 से auth.lo5 पर काम करते हैं! – Borealid

उत्तर

0

स्थानीय होस्ट के साथ auth.lo5 के सभी उदाहरणों की जगह का प्रयास करें:

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

यदि वह काम नहीं करता है, कि अगर काम करता है देखने के लिए एसएसएल बंद करने की कोशिश:

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

+0

दोनों समाधान काम नहीं कर रहे हैं। मुझे लगता है, यह एसएसएच कमांड में लोकलहोस्ट नहीं होना चाहिए, क्योंकि एलडीएपी सर्वर फीनिक्स के लिए 'लोकलहोस्ट' नहीं बल्कि 'auth.lo5' तक पहुंच योग्य है। 'लोकलहोस्ट' फीनिक्स को इंगित करता है। शायद मुझे अपने क्लाइंट या सर्वर ssh-configs में कुछ डालना होगा? – Hfaua

1

अगर मुझे यह सही मिला तो फीनिक्स.लो 5 और auth.lo5 2 अलग-अलग मशीनें हैं। यदि ऐसा है तो आपको एसएसएच मशीन में सुरंग बनाना होगा, और फिर सही मशीन पर ldap क्वेरी भेजें।

आपका आदेश: ssh -L 636:auth.lo5:636 [email protected] सही है यदि phoenix.lo5.bielsko.plauth.lo5 को DNS या/etc/hosts के माध्यम से हल कर सकता है, यदि आपको इसके आंतरिक आईपी पते का उपयोग करने की आवश्यकता नहीं है।

इसके अलावा, आप अपने पीसी पर पोर्ट 636 का उपयोग करना चाहते हैं, तो आप सुपर उपयोगकर्ता (रूट या sudo के साथ) के रूप में अपने आदेश को चलाने के लिए की जरूरत है किसी और आप के रूप में Borealid

द्वारा

कहा एक उच्च बंदरगाह (1024 से ऊपर) उपयोग करने की आवश्यकता एक बार सुरंग उठने के बाद आपको

+0

बेशक 'फीनिक्स' और 'ऑथ' अलग-अलग मशीनें हैं और हम इसके नामों को हल करने के लिए हमारे DNS का उपयोग करते हैं। मुझे लगता है, पते यहां असली समस्या नहीं हैं। मैंने सुरंग के माध्यम से वास्तविक कनेक्शन होने के लिए 'tcpdump' का उपयोग किया है और यदि 'ldapwhoami' सही ढंग से पैकेट भेज रहा है। नतीजा भ्रमित था: 'स्थानीय = [सुरंग] => फीनिक्स => ऑथ (एलडीएपी पूछताछ) => फीनिक्स = [सुरंग] => स्थानीय ', इसलिए मुझे लगता है कि' ldapwhoami' सही जवाब देना चाहिए, लेकिन मुझे त्रुटि मिलती है 'ldap_sasl_bind (सरल): एलडीएपी सर्वर (-1)' से संपर्क नहीं कर सकता। मेरे पास 'फीनिक्स' पर सुडो है इसलिए 1024 से कम बंदरगाह समस्या नहीं है, मुझे लगता है। क्या आपको अजीब लगता है? – Hfaua

+0

मैं इस मुद्दे पर टक्कर लगी हूं। मेरा वर्तमान विचार यह है कि एसएसएल हैंडशेक असफल रहा है। मैंने मेजबाननाम को नकली करने के लिए स्थानीय/etc/hosts प्रविष्टि का उपयोग करने का प्रयास किया, लेकिन यह अभी तक काम नहीं कर पाया है। –

1

प्रश्नों के लिए स्थानीयहोस्ट को इंगित करना होगा। मैं इसी मुद्दे पर भाग गया।

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

हो सकता है आप एक ऐसी ही समस्या कम पड़ रहा है: -d1 साथ चल रहा है मुझे इस त्रुटि से पता चला है।

मैं चलाकर इसे बाहर नकली करने में सक्षम था:

sudo hostname someserver.mydomain.com

जिसके कारण एसएसएल यह सही मेजबानी के लिए बात कर रहा था ग्रहण करने के लिए।

संबंधित मुद्दे