2010-07-25 15 views
8

Tôi đang phát triển trang web cho trường học của mình. Trong trường đó, chúng tôi xác thực người dùng thông qua LDAP, do đó, có một ý tưởng để làm tương tự thông qua trang web của trường. Trên trang web đó mọi thứ đang hoạt động hoàn hảo, nhưng trong quá trình phát triển, tôi cần rất thường xuyên để kiểm tra nếu giải pháp đó hoạt động, không. Để không thực hiện các thay đổi của tôi thường xuyên như vậy tôi muốn kiểm tra trang web này trên máy tính cục bộ của tôi, nhưng để kết nối với LDAP tôi muốn sử dụng đường hầm ssh. Trong mạng lưới trường học, chúng tôi có một máy chủ thông qua phù thủy, chúng tôi đang kết nối với bên trong mạng lưới trường học của chúng tôi. Địa chỉ của nó là phoenix.lo5.bielsko.pl. Bên trong mạng này, chúng tôi có máy chủ LDAP với các cổng 389 và 636 mở. Địa chỉ của nó là auth.lo5. Tôi không có quyền truy cập vào auth.lo5 qua SSH, tôi chỉ có thể kết nối với nó để nhận một số mục nhập LDAP. Vì vậy, tôi đã cố gắng để chạy đường hầm SSH bằng cách chạy:PHP kết nối qua đường hầm SSH tới LDAP trong mạng khác

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

Sau đó, tôi đã thiết lập trong tôi /etc/hosts rằng auth.lo5 được trỏ đến 127.0.0.1. Tôi đang kết nối với LDAP bằng PHP theo cách như vậy:

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

Nhưng tôi gặp lỗi Can't contact LDAP server. Tôi nghĩ rằng, vấn đề đó có thể là trên phoenix.lo5.bielsko.pl trong cấu hình daemon SSH của nó hoặc trong các đối số được chuyển đến hàm ldap_connect(). Bạn có thể cho tôi biết, tôi nên đặt gì trong sshd_config hoặc trong các đối số được chuyển đến ldap_connect để làm cho nó hoạt động?

Tôi đã đăng cùng một câu hỏi trong similar thread, nhưng không ai trả lời câu hỏi của tôi.

P.S. Trong /etc/ssh/sshd_config của tôi, tôi có dòng AllowTcpForwarding yes

+0

Nếu bạn sử dụng các công cụ dòng lệnh LDAP, chúng có hoạt động không? Hãy thử sử dụng 'ldapwhoami -H ldaps: // auth.lo5' trước tiên - PHP không báo cáo nhiều thư hữu ích như tiện ích dòng lệnh LDAP. – Borealid

+0

@Bealealid, máy chủ LDAP của chúng tôi không cho phép liên kết ẩn danh, vì vậy tôi đã nhập 'ldapwhoami -D cn = lo5-www, ou = dịch vụ, dc = auth, dc = lo5 -W -H ldaps: // auth .lo5' và trên phượng câu trả lời là 'dn: cn = lo5-www, ou = dịch vụ, dc = auth, dc = lo5', nhưng trên máy tính để bàn của nó' ldap_sasl_bind (SIMPLE): Không thể kết nối với máy chủ LDAP (-1) ' – Hfaua

+1

Cho đến khi các công cụ dòng lệnh hoạt động, đường hầm SSH của bạn không hoạt động. Vì lệnh bạn đang sử dụng là spot-on (và, thành thật mà nói, tôi * ấn tượng * bạn biết cách làm điều này - đường hầm SSH phức tạp!), Tôi chỉ còn một gợi ý nữa. Hãy thử sử dụng một cổng không có đặc quyền (cao hơn 1024) cho cổng cục bộ (như trong, 'ssh -L 9999: auth.lo5.bielsko.pl: 636'). Cũng chỉ định một FQDN! Tuy nhiên, thử nghiệm với các công cụ dòng lệnh. Và đảm bảo chúng hoạt động từ phượng.lo5 đến auth.lo5! – Borealid

Trả lời

0

Hãy thử thay thế tất cả các trường hợp của auth.lo5 với localhost:

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

Nếu điều đó không làm việc, thử tắt SSL để xem nếu mà làm việc:

ssh -L 389:localhost:389 [email protected]lo5.bielsko.plldap_connect('localhost', 389);

+0

Cả hai giải pháp đều không hoạt động. Tôi nghĩ rằng, nó không phải là localhost trong lệnh ssh, bởi vì máy chủ LDAP có thể truy cập cho phoenix không phải bởi 'localhost' nhưng 'auth.lo5'. 'localhost' trỏ đến phượng hoàng. Có lẽ tôi phải đặt một cái gì đó cho khách hàng của tôi hoặc máy chủ ssh-configs? – Hfaua

1

Nếu tôi nhận được đúng phượng.lo5 và auth.lo5 là 2 máy khác nhau. Nếu vậy bạn phải tạo một đường hầm cho máy ssh, và sau đó gửi các truy vấn ldap đến đúng máy.

Lệnh của bạn: ssh -L 636:auth.lo5:636 [email protected] là đúng nếu phoenix.lo5.bielsko.pl có thể giải quyết auth.lo5 qua DNS hoặc/etc/hosts, nếu không bạn cần sử dụng địa chỉ IP nội bộ của nó.

Ngoài ra nếu bạn muốn sử dụng cổng 636 trên máy của bạn, bạn cần phải chạy lệnh của bạn như superuser (root hoặc với sudo) khác mà bạn cần phải sử dụng một cổng cao (trên 1024) như đã nêu bởi Borealid

Khi đường hầm lên, bạn phải trỏ đến localhost để thực hiện các truy vấn

+0

Tất nhiên 'phoenix' và' auth' là các máy khác nhau và chúng tôi sử dụng DNS để giải quyết tên của nó. Tôi nghĩ, địa chỉ không phải là vấn đề thực sự ở đây. Tôi đã sử dụng 'tcpdump' để kiểm tra xem có kết nối thực thông qua đường hầm hay không và nếu' ldapwhoami' đang gửi gói đúng cách. Kết quả đã gây nhầm lẫn: 'local = [tunnel] => phoenix => auth (LDAP truy vấn) => phoenix = [tunnel] => local', vì vậy tôi nghĩ rằng' ldapwhoami' sẽ trả lời đúng, nhưng tôi gặp lỗi 'ldap_sasl_bind (SIMPLE): Không thể kết nối với máy chủ LDAP (-1)'. Tôi có sudo trên 'phoenix' nên các cổng dưới 1024 không phải là vấn đề, tôi nghĩ vậy. Bạn không nghĩ rằng nó kỳ lạ? – Hfaua

+0

Tôi đang gặp phải sự cố tương tự này. Suy nghĩ hiện tại của tôi là bắt tay SSL không thành công. Tôi đã thử sử dụng một mục/etc/hosts cục bộ để giả mạo tên máy chủ, nhưng điều đó vẫn chưa được giải quyết. –

1

Tôi đã gặp phải vấn đề tương tự này. Chạy với -d1 chỉ cho tôi lỗi này:

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

Có thể là bạn đang đánh một vấn đề tương tự.

tôi đã có thể giả mạo nó ra bằng cách chạy:

sudo hostname someserver.mydomain.com

khiến SSL để cho rằng nó đang nói chuyện với chủ nhà ngay.