Forum Linux.général apache et ssh.

Posté par  .
Étiquettes : aucune
0
9
nov.
2004
Bonjour,
Puis-je soumettre un petit pb.
J'administre plusieurs serveurs dont l'un est un serveur d'admin.
Je souhaite utiliser une interface php pour effectuer différentes opérations via le serveur d'admin sur ces serveurs.
Mon script php présent sur le serveur d'admin utilise des ordres ssh pour interroger les différents serveurs,
bien sur la clé publique de l'utilisateur disons "TOTO" a été auparavant ajoutée à l'authorized_key de chaque serveur.
Mon PB: l'id alors connu sur mon serveur d'admin est apache,les requetes ssh ne sont pas exécutées,normal
mais comment puis-je faire executer des ordres via ssh.
.
Avez-vous déja réglé un cas comme celui-ci ? Quelles sont les parades . A part changer le user et le groupe dans httpd.conf.

Autre question:
Peut-on lancer des ordres du style "shell_exec(ssh serveur ordre) directement à partir de mon interface PHP.
Il me semble que non c'est pourquoi je passe par un scrip shell.
Je suis preneur de toute solution.
Je vous remercie de votre aide.
  • # SUEXEC ?

    Posté par  . Évalué à 2.

    Salut,
    Pour résumer et voir si j'ai bien compris :
    - tu as un serveur d'admin avec Apache (quelle version ?) et PHP (module Apache)
    - tu veux que ces scripts PHP exécutent des commandes sur d'autres serveurs via SSH.

    Dans ce cas, la commande SSH sera exécutée par l'utilisateur Apache (celui déclaré dans httpd.conf) et il faut donc générer une privée pour l'utilisateur Apache et déposer la clé publique correspondante sur les machine cibles (dans le fichier authorized_keys des users visés).

    Si tu ne veux pas, pour des raisons de sécurité, que ce soit l'utilisateur Apache qui se connecte sur les machines cibles, tu peux essayer d'utiliser des CGI au lieu du module PHP pour Apache (remarque que tes CGI peuvent être des scripts PHP, mais qu'il doivent être exécutés par un interpréteur externe et non pas par Apache via le module PHP adéquat). Via le module Apache suexec (et moyennant quelques considérations de sécurité à découvrir dans la doc Apache), ces CGI seront exécutés par leur propriétaire -> c'est donc la clé de celui-ci qu'il faut distribuer (il est possible que le répertoire ~user/.ssh ne soit pas accessible depuis le CGI : il faut alors mettre la clé privé au bon endroit dans l'arborescence, la préciser lors de l'appel ssh et la protéger correctement au niveau des droits d'accès).

    Concernant ta deuxième question, je n'ai pas tout compris. S'il s'agit de pouvoir exécuter des commandes arbitraires depuis l'interface web sur les serveurs à administrer, tu peux essayer de jeter un coup d'½il du côté du module telnet de webmin : il me semble que c'est écrit en Perl et que ça permet d'ouvrir des sessions telnet ou SSH sur des serveurs distants. Il n'est pas impossible que ce soit adaptable à tes besoins.

    En espérant avoir pu t'aider (et ne pas être trop à côté de la plaque)
    JJD
    • [^] # Re: SUEXEC ?

      Posté par  . Évalué à 1.

      Salut,

      Tu n'es pas du tout a coté de la plaque. C'est comme ça quer ca marche ;) (chez moi en tout cas)
    • [^] # Re: SUEXEC ?

      Posté par  . Évalué à 1.

      Bonjour et un grand merci à jdd et fouyaya. Je vais étudier cette solution. J'arrivais bien à mes fins mais en distribuant les clés ssh sur tous mes serveurs et en modifiant user et groupe dans httpd.conf. Mais je ne sais pas si c'est sécurisé ?
      Je vous tiens au courant.
      A bientôt.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.