IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[SSH2] Socket et ssh


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 49
    Points : 32
    Points
    32
    Par défaut [SSH2] Socket et ssh
    Bonjour à tous.

    J'ai un script qui permet de se connecter via les sockets sur des serveurs.

    Mon problème est que je doit faire le même script pour se connecter à un serveur ssh.

    Questions : comment faire pour me loguer sur ce serveur nécéssitant un login et mot de passe (crypté ?) avec ce script.

    Merci pour vos réponses.

  2. #2
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    J'ai reussi a lancer un script (ou une commande système, ...) sur un serveur ssh de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?
    $connection = ssh2_connect('serveur.ssh.fr', 22);
    ssh2_auth_password($connection, 'login', 'mot_de_passe');
    $stream = ssh2_exec($connection, 'perl mon_script.pl ');
    ?>
    Du moins, en ligne de commande (en lancant php ce_script.php) et non, plus classiquement, à partir d'un client web.
    En effet, en mode "normal", le problème est de repondre à la question "voulez vous enregistrer la clef RSA ?" (question qui apparait dans les logs d'Apache), mais qui bien sur reste sans reponse.

    Je crois que c'est possible en faisant une manip que j'ai oubliée, et qui est à mon sens un véritable trou de securité (avec la technique qu'on m'avait donnée, on n'avait même plus besoin de mot de passe, or mon serveur Web est aussi un serveur ssh utilisé par pas mal de monde).
    J'ai aussi essayé de pallier à ce probleme en permettant de me loguer en tant que user Apache sur mon systeme. J'ai fait un ssh sur le serveur distant, j'ai donc eu la question, je lui ai repondu oui (en principe la question n'est plus reposée ensuite)... mais ca n'a eu aucun effet concernant l'utilisation à travers un client.

    Donc, je suis très interessée par les réponses éventuelles que tu pourrais avoir pour résoudre ce problème....

    Sohnic

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 49
    Points : 32
    Points
    32
    Par défaut
    Merci pour t'as réponse, ça l'aire de fonctionner.

    Mais comment faire pour lire le résultat d'un script?

    Merci

  4. #4
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Soit je stocke tout dans un fichier resultat que j'exploite apres coup, soit mon script remplit (ou utilise) une base de données MySQL, qui peut se trouver eventuellement sur un serveur distant (donc eventuellement a l'emplacement de ton site web).
    Il existe en php des fonctions de scp ou sftp, mais je ne les ai pas utilisées...
    Tu utilises ton script en ligne de commande ? Sinon comment as-tu contourné le problème de la clef publique ?

    Merci pour tes lumières,

    Sohnic

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 49
    Points : 32
    Points
    32
    Par défaut
    Mauvaise nouvelle : le script ne marche pas.
    Raison : j'ai pas lu correctement ton message.

    Voici le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $connection = ssh2_connect(mon.serveur.com', 22) or die('Echec de la connexion');
    ssh2_auth_password($connection, 'login', 'mdp') or die("Erreur");
    $stream = ssh2_exec($connection, 'cd mon_repertoire') or die("Erreur");
    $stream = ssh2_exec($connection, './script.php') or die("Erreur");
    Explication :

    En fait, j'utilise (et souhaite utilisé) easyphp sous windows avec PHP5. Quand j'execute ce code : aucune erreur. Or le script doit écrire le résultat dans un fichier text et là j'ai rien : pas de fichier, données,...pourtant mon script fonctionne.

    Quand à la clé publique, j'ai essayé la méthode qui se trouve dans l'aide de php : elle me retourne une erreur (fonction ssh2_auth_pubkey_file)

    Je bosse encore dessus, mais pour l'instant je stagne.
    Comment fais-tu pour faire fonctionner ton script ?
    J'ai essayer mais il me retourne une erreur :
    Fatal error: Call to undefined function ssh2_connect() in C:\Program Files\EasyP
    HP 2.0b1\php5\teste2.php on line 25
    Merci pour tes réponses, elles sont les bien venues.

  6. #6
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    Je suppose que l'erreur d'apostrophe est une faute de frappe dans :
    $connection = ssh2_connect(mon.serveur.com', 22) or die('Echec de la connexion');
    qui doit etre :
    $connection = ssh2_connect('mon.serveur.com', 22) or die('Echec de la connexion');

    Mais ceci n'explique pas ton erreur. As-tu installé libssh2 ? Cette bibliothèque est, je crois, un prérequis indispensable.
    Je suis sous linux et windows mais sans easy php, et je me souviens que j'avais un peu galéré la-dessus... Il est possible qu'il faille aussi modifier le php.ini. Mais tout ca remonte à loin.
    Jettes un oeil la dessus :
    http://fr.php.net/manual/fr/ref.ssh2.php , ca t'en dira surement plus long...

    Sinon, comme dit dans le premier post que je t'ai envoyé, je n'ai reussi à faire tourner ces types de scripts qu'en ligne de commande. Peut-etre que sous Windows, tu n'auras pas ce problème. La gestion des utilisateurs est différente que sous linux...

    Evidemment, la suite de ton script ne peut pas tourner, l'initialisation de la connexion ayant échouée et les fonctions suivantes utilisant aussi libssh2.

    Voila, essaie deja de rendre ton serveur capable d'utiliser les fonctions ssh pour voir comment ca se comporte...

    Bon courage !

    Sohnic

Discussions similaires

  1. Sockets VS SSH
    Par Warman dans le forum Langage
    Réponses: 0
    Dernier message: 16/09/2011, 15h55
  2. [SSH2] PHP/SSH commande SQL
    Par Jonathan.b dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/10/2007, 08h24
  3. [SSH2] SSH sous PHP
    Par nick_08 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 03/08/2007, 02h12
  4. Lancer un serveur de socket par SSH
    Par ouss dans le forum Linux
    Réponses: 5
    Dernier message: 15/06/2007, 12h29
  5. Net::SSH::Perl Can't bind socket to port 1023: Adresse déjà utilisée
    Par sohnic dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 27/11/2006, 21h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo