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

Langage PHP Discussion :

Connexion SFTP au travers d'un tunnel SSH (ou derrrière un proxy) ?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 47
    Points : 28
    Points
    28
    Par défaut Connexion SFTP au travers d'un tunnel SSH (ou derrrière un proxy) ?
    Bonjour à tous,

    J'ai un serveur PHP qui n'est pas relié directement à internet et j'ai besoin d'établir une connexion SFTP.
    Facile me direz-vous, suffit d'ouvrir un tunnel via un serveur de rebond.
    Moué, bah je galère ! (sauf si je fais fausse route)

    Indépendamment, les 2 accès fonctionnent. Je sais effectuer une connexion SSH sur mon serveur de rebond. Le serveur SFTP fonctionne depuis mon PC.
    Mais inutile de tourner autour du pot, voici du code.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
     
    $tunnel_ip='172.16.0.2';
    $tunnel_port='22';
    $tunnel_user='user';
    $tunnel_pwd='';
     
    $ssh_ip='ip_address';
    $ssh_port='2222';
    $ssh_user='user';
    $ssh_pwd='password';
     
     
    $connection = ssh2_connect($ssh_ip, $ssh_port);
    ssh2_auth_password($connection, $ssh_user, $ssh_pwd);
     
    $tunnel = ssh2_tunnel($connection, $tunnel_ip, $tunnel_port);
     
    $sftp = ssh2_sftp($connection);
    $statinfo = ssh2_sftp_stat($sftp, '/');
     
    var_dump($statinfo);

    PHP Warning: ssh2_connect(): Unable to connect to x.x.x.x on port 2222 in /var/www/test.php on line 14
    PHP Warning: ssh2_connect(): Unable to connect to x.x.x.x in /var/www/test.php on line 14
    PHP Warning: ssh2_auth_password() expects parameter 1 to be resource, boolean given in /var/www/test.php on line 15
    PHP Warning: ssh2_tunnel() expects parameter 1 to be resource, boolean given in /var/www/test.php on line 17
    PHP Warning: ssh2_sftp() expects parameter 1 to be resource, boolean given in /var/www/test.php on line 19
    PHP Warning: ssh2_sftp_stat() expects parameter 1 to be resource, null given in /var/www/test.php on line 20
    Ce que je ne comprends pas c'est qu'à aucun moment, la doc n'explique comment s'authentifier sur le tunnel. Les accès du tunnel ne sont pas nécessairement identiques au serveur cible.

    Bref, tout aide sera la bienvenue.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 47
    Points : 28
    Points
    28
    Par défaut
    Vous n'allez tout de même pas me dire que je suis le seul à vouloir faire ça ? 😮
    Ou alors tous les devs sont en vacances ?!

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 648
    Points : 43 646
    Points
    43 646
    Par défaut
    D'après la doc de la fonction ssh2_connect, celle-ci attend 4 paramètres, tu n'en fourni que 2. Il n'est pas précisé que les 2 paramètres manquants sont optionnels.

    Si tu regardes la doc, tu as une exemple. Essayes avec l'exemple.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 47
    Points : 28
    Points
    28
    Par défaut
    Avant même d'entre dans les détails de connexion, ce que je ne comprends pas c'est qu'il tente d'abord d'établir la connexion vers le serveur externe avant d'ouvrir le tunnel. Ce n'est pas logique.
    Comme le serveur n'a pas accès directement à internet, il devrait d'abord ouvrir la connexion vers le serveur de rebond puis se connecter sur le serveur externe.

    Quelque chose m'échappe...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 47
    Points : 28
    Points
    28
    Par défaut
    Bon j'ai trouvé 1 solution (il y en a peut-être d'autres).

    → Il faut d'abord ouvrir un tunnel SSH sur un port aléatoire en local, puis on peut créer la connexion SFTP en PHP.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh -f -N -i /home/user/.ssh/id_rsa user@172.16.0.2 -L 2345:ssh_ip:ssh_port
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $cmd_ssh_tunnel="/usr/bin/ssh -f -N -o StrictHostKeyChecking=no -o ConnectTimeout=10 -i identity_file user@172.16.0.2 -p 22 -L 2345:ssh_ip:ssh_port > /dev/null 2>&1";
    exec($cmd_ssh_tunnel, $output_cmd, $return_cmd);
     
    $connection = ssh2_connect('127.0.0.1', '2345');
    ssh2_auth_password($connection, $ssh_user, $ssh_pwd);
     
    $sftp = ssh2_sftp($connection);
    $statinfo = ssh2_sftp_stat($sftp, '/');
    ssh2_sftp_mkdir($sftp, '/test');

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/03/2012, 13h06
  2. Connexion SFTP et SSH via script Bash
    Par pcsystemd dans le forum Linux
    Réponses: 1
    Dernier message: 18/06/2009, 12h39
  3. Réponses: 1
    Dernier message: 21/11/2008, 17h41
  4. Samba au travers d'un tunnel SSH
    Par goldkey dans le forum Windows XP
    Réponses: 2
    Dernier message: 18/07/2008, 22h02
  5. Réponses: 6
    Dernier message: 02/08/2007, 13h11

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