Partage
  • Partager sur Facebook
  • Partager sur Twitter

connexion SSH via un rebond (tunnel ssh)

    21 octobre 2017 à 2:30:22

    Bonjour,

    Je développe une application qui doit ce connecter sur plusieurs machine en SSH pour me connecter sur celle-ci je doit utiliser un serveur SSH qui fait office de passerelle :

    Serveur WEB ====> Serveur SSH Proxy =====> machine distante ssh

    Je cherche a me connecter en ssh sur le proxy puis créer un tunnel ssh vers la machine distante pour ensuite ouvrir une session SSH vers la machine distante.

    <?php
    
    $proxy = ssh2_connect("10.0.0.1", 22);
    $auth = ssh2_auth_password($proxy, "monuser", "monpassword");
    if ($auth === true)
    {
    	$tunnel = ssh2_tunnel($proxy, "10.255.255.254", 22);//Tunnel vers ma machine distante
    }


    Seulement, la fonction ssh2_connect ne prend pas en paramètre une ressource, et s'y j'essaye de faire un :

    ssh2_auth_password($tunnel, "monuserdistant", "monpassworddistant")

    L'authentification ne fonctionne pas car la session SSH n'a pas commencé, j'obtiens l'erreur "Exit before auth" sur ma machine distante.

    Comment puis-je faire ça ?

    Cordialement,

    Timiti29

    -
    Edité par timiti29 21 octobre 2017 à 2:33:03

    • Partager sur Facebook
    • Partager sur Twitter
    DUT Réseau & Télécommunication et Licence Professionnelle Réseau Sans-Fil et Sécurité
      22 octobre 2017 à 0:07:28

      Bonsoir,

      Perso je n'ai fais qu'une connexion SSH vers une machine à la fois donc ce n'est qu'un avis ou une piste.

      Si la première connexion SSH est active, il faudrait je pense pour ouvrir une autre connexion SSH exécuter une commande Shell du genre

      exec('ssh [user]@[IP]); car si l'on refait un ssh2_tunnel, il va tenter d'ouvrir une nouvelle connexion SSH depuis le serveur web et non du proxy.

      • Partager sur Facebook
      • Partager sur Twitter
        22 octobre 2017 à 13:37:26

        Bonjour,

        Le but du ssh2_tunnel est d'établir un tunnel ssh entre le serveur proxy et une machine distante et rediriger un port en local a travers ce tunnel.

        J'ai essayé dans un premier temps d'établir le tunnel ssh via la commande shell_exec après avoir déterminé un port tcp disponible :

        //Liste des port TCP ouvert
        $port_used_string = shell_exec("netstat -lnt4 | grep LISTEN | cut -d' ' -f16 |cut -d':' -f2");
        $port_used = array_filter(explode("\n", $port_used_string));
        do{
        	$port = mt_rand(1024, 65535);
        }while(in_array($port, $port_used));
        
        $sshproxy_host = "10.0.0.1";
        $sshproxy_port = 22;
        $sshproxy_user = "monuser";
        $sshproxy_password = "monpassword";
        
        $ssh_host = "10.255.255.254";
        $ssh_port = 22;
        $ssh_user = "monuserdistant";
        $ssh_password = "monpassworddistant";
        //Etablissement du tunnel avec redirection de port, 'f' pour lancer en arière plan, 'N' pour aucune commande a exécuter
        echo shell_exec("sshpass -p '$sshproxy_password' ssh -fNL $port:$ssh_host:$ssh_port $sshproxy_user@$sshproxy_host -p $sshproxy_port -o StrictHostKeyChecking=no");
        
        $ssh_distant = ssh2_connect('127.0.0.1', $port);
        $auth = ssh2_auth_password($ssh_distant, $ssh_user, $ssh_password);
        if ($auth === true)
        {
        	echo "Connexion OK";
        }

        Seulement quand j'exécute ma page, celle-ci ne ce charge pas et reste figé a la ligne du shell_exec, quand j'exécute la ligne directement dans un shell, j'ai bien mon tunnel établit.

        Comment puis-je faire ? où me suis-je trompé ?

        Cordialement,
        Timiti29

        • Partager sur Facebook
        • Partager sur Twitter
        DUT Réseau & Télécommunication et Licence Professionnelle Réseau Sans-Fil et Sécurité

        connexion SSH via un rebond (tunnel ssh)

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown