Aujourd’hui au boulot, pour un de mes clients je dois regarder l’organisation de son annuaire pour notre application. Je l’appelle en lui demandant très gentillement si je peux obtenir un moyen pour venir effectuer des requêtes sur son annuaire.

Après quelques péripéties, ouverture de port sur le firewall, de la translation d’adresse et j’en passe… il me donne enfin un accès ssh sur l’un de ces serveurs, qui n’est malheureusement pas pour moi le serveur hébergeant l’annuaire LDAP.

Je me connecte, j’ai les informations pour venir requêter son annuaire mais je n’ai pas la commande « ldapsearch ». En regardant un peu le système (RHE 4.2), j’ai 3 solutions devant moi :

  • Installer le paquet qui fournit la commande ldapsearch. Pas super, comme solution car d’une part le serveur n’est pas rélié à internet, et d’autre part ne sachant pas ce que fait ce serveur, je n’aime pas installer des choses si c’est une machine de prod.
  • Créer un programme php car j’en fait vu que le paquet php-ldap était installé. N’étant pas un bon codeur, cette solution ne m’intéresse pas beaucoup.
  • Trouver une bidouille avec ssh pour lancer depuis mon poste, la commande ldapsearch à travers un tunnel.

En choisissant la dernière solution, j’ai ma machine A où je peux venir me connecter en ssh sur la machine B. Depuis B, je peux venir interroger la machine C qui héberge l’annuaire Ldap. (la connexion de A vers C est impossible)

En fouillant, dans le manuel de ssh. J’ai enfin trouvé ce que je voulais :

sur A, je lance

A$ ssh -g -L1234:C:389 B

Du coup, sur ma machine A, je lance

A$ ldapsearch -h localhost -p 1234 -x -b "XXXX"

Une redirection sur localhost:1234 est effectuée sur C:389 à travers la connexion ssh sur C:22