Aller au contenu

Installation De Libssh2


Messages recommandés

Bonjour a tous,

voila comme le nom du message l'indiquer je désirerai installer la lib libssh2 dans apache afin de pouvoir utiliser les commande ssh de php.

j'ai fait quelque recherche et je n'est trouver que 2 lien.

http://forum.synology.com/enu/viewtopic.php?f=35&t=36411

malheureusement aucun n'a réussi.

je me tourne vers vous pour savoir si quelqu'un la déjà installer? et comment?

cordialement

Lien vers le commentaire
Partager sur d’autres sites

enfaite se que j'aimerais c'est créer un tunnel ssh entre le syno et un autre serveur (sur lequel je ne peux pas modifier la configuration)

a travers se tunnel j'aimerais y faire passé du ftp (pour conserver les principe de reprise de téléchargement....)

mon problème c'est que le serveur au quelle je me connecte accepte seulement une authentification login/password pour le ssh (l’authentification par clé est refusé)

du coup je n'arrive pas a automatiser la commande ssh pour le tunnel car mon mots de passe est a chaque fois demandé.

auriez vous une solution pour palier se problème?

(d'ou l'intéret d'avoir la libssh2 ^^)

Lien vers le commentaire
Partager sur d’autres sites

bon j'ai trouver une lib ssh écrite en php pour ceux que cela intéressé, je n'est pas trouver comment établir un tunnel, cependant elle fonctionne bien.

http://phpseclib.sourceforge.net/

cordialement

Bonjour,

Je recherche également un moyen d'utiliser ssh. L'installation de libssh2 me parait pas vraiment simple.

J'essaye donc phpseclib depuis hier, mais pas pour faire la même chose que toi.

Mon objectif à moi étant d'éxecuter une commande sudo, mais pour l'instant je n'arrive pas à détecter le moment où cela demande le password et malheuresement le forum de support est HS aujourd'hui.

Enfin bref, ton topic m'intéresse ;)

Lien vers le commentaire
Partager sur d’autres sites

c ton post en discution solo ca ma fait rire mais pas mechament hein

lol effectivement je me suis senti un peux seul ^^

Bonjour,

Je recherche également un moyen d'utiliser ssh. L'installation de libssh2 me parait pas vraiment simple.

J'essaye donc phpseclib depuis hier, mais pas pour faire la même chose que toi.

Mon objectif à moi étant d'éxecuter une commande sudo, mais pour l'instant je n'arrive pas à détecter le moment où cela demande le password et malheuresement le forum de support est HS aujourd'hui.

Enfin bref, ton topic m'intéresse ;)

je viens de trouver ce que vous recherchiez @p_tony


<?php

include('Net/SSH2.php');

$sftp = new Net_SSH2('www.domain.tld');

$sftp->login('username', 'password');

echo $sftp->read('username@username:~$');

$sftp->write("sudo ls -la\n");

$output = $sftp->read('#Password:|username@username:~\$#', NET_SSH2_READ_REGEX);

echo $output;

if (preg_match('#Password:#', $lines)) {

	$ssh->write("password\n");

	echo $sftp->read('username@username:~$');

}

?>

http://phpseclib.sou.../documentation/

Modifié par devildant
Lien vers le commentaire
Partager sur d’autres sites

victoire, tunnel ssh + ftp ok

etape 1 :

creer un user avec 0 droit

etape 2:

lui donnée l'acces en ssh

etape 3:

se connecter en root via ssh

puis faite les commandes suivantes:


su usersshsyno

entrer yes a la question pauser


ssh -N -f -L3131:ipserveurdistant:21 loginserveurdistant@ipserveurdistant

entrer yes a la question pauser

puis faites ctrl c

etape 4: le code php

include('Net/SSH2.php');


function findTunnel($ssh)

{

$proc = $ssh->exec('ps | grep userssh');

$procarray = array();

$procarray = explode("\n", $proc);

	foreach ($procarray as $v) {

		if (strpos($v, "ssh -N -f -L3131:ipserveurdistant:21"))

			return true;

	}

return false;

}


$ssh = new Net_SSH2('ipsyno');

if (!$ssh->login('userssh', 'passuserssh')) {

	exit('Login Failed');

}

if (findTunnel($ssh) == false)

{

$ssh->read('NomDuSyno>');

$ssh->write("ssh -N -f -L3131:ipserveurdistant:21 loginserveurdistant@ipserveurdistant\n");

$ssh->read("Debian GNU/Linux 6.0");

$ssh->read("loginserveurdistant@ipserveurdistant's password:");

$ssh->write("passusersshdistant\n");

$ssh->read('NomDuSyno>');

}

$ssh->write("exit\n");

$ftp_server = "127.0.0.1";

$ftp_user_name = "loginserveurdistant";

$ftp_user_pass = "passusersshdistant";

$conn_id = ftp_connect($ftp_server, 3131);

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

ftp_pasv ($conn_id , true);

Modifié par devildant
Lien vers le commentaire
Partager sur d’autres sites

je viens de trouver ce que vous recherchiez @p_tony


<?php

include('Net/SSH2.php');

$sftp = new Net_SSH2('www.domain.tld');

$sftp->login('username', 'password');

echo $sftp->read('username@username:~$');

$sftp->write("sudo ls -la\n");

$output = $sftp->read('#Password:|username@username:~\$#', NET_SSH2_READ_REGEX);

echo $output;

if (preg_match('#Password:#', $lines)) {

	$ssh->write("password\n");

	echo $sftp->read('username@username:~$');

}

?>

http://phpseclib.sou.../documentation/

Oui, je me suis basé là dessus mais ça ne fonctionne pas. Peut -être parce que je test avec xampp, va savoir.

Je vais tester directement dans mon syno pour voir. En tout cas content de voir que tu as trouvé ta solution. :)

Lien vers le commentaire
Partager sur d’autres sites

Finalement, j'ai fini par y arriver. :D

Voici un exemple pour ceux que ça intéressent:


<?php
$connexion=1;
switch ($connexion) {
case 0:
$cible='localhost';
$login='user';
$password='pass';
break;
case 1:
$cible='192.168.0.10';
$login='user';
$password='pass';
break;
case 2:
$cible='192.168.0.9';
$login='user';
$password='pass';
break;
}

include('Net/SSH2.php');
define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX); // pour récupérer les logs avec $ssh->getLog();
$ssh = new Net_SSH2($cible);
if (!$ssh->login($login, $password)) {
exit('Login Failed');
}
$ssh->setTimeout(5); // pour ne pas attendre indéfiniment un read() qui ne trouve rien.

//echo $ssh->read('[prompt]');
$ssh->write("sudo ls -l\n");

// Le motif détecte entre autres: 'Mot de passe :', 'Password:', '[sudo] password for tony:'
$output = $ssh->read('/((Mot\sde\spasse|Password)[^:]*\|(\[prompt\])/i', NET_SSH2_READ_REGEX);
echo "<pre>$output</pre>";

if (preg_match('/(Mot\sde\spasse|Password)[^:]*\:/i', $output)) {
$ssh->write("$password\n");
echo "<pre>".$ssh->read('[prompt]')."</pre>";
}

//echo "<pre>".$ssh->getLog()."</pre>";
?>

Modifié par p_tony
Lien vers le commentaire
Partager sur d’autres sites

Pour avoir la fonction setTimeout que utilise @p_tony il faut télécharger phpseclib sur le svn.

j'ai trouver une petit fonction qui est bien pratique, elle permet de tester une url en php.

vous allez me dire a quoi cela sert ^^

enfaite je me suis rendu compte que lorsque que je perdais le net, la page php que j'ai codé et qui fait office de client ftp ne répondais plus(logique ^^),

c'est la que la fonction suivante rentre en scène, elle permet de savoir si la page répond(et bien d'autre) avec un timeout ^^.


function monFileGetContentsCurl($url, $montrerContenu, $timeout){

	  $ch = curl_init($url);

	  curl_setopt($ch, CURLOPT_HEADER, 0);

	  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

	  curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);

	  $resultat = curl_exec($ch);

	  $CurlErr = curl_error($ch);

	  curl_close($ch);

	  if ($CurlErr) {

		echo $CurlErr;

		return false;

	  }elseif ($montrerContenu){

		return $resultat;

	  }

	  return true;

	}

$url = "http://www.google.fr"; //votre url

$montrerContenu = false; // mettre a true si vous voulez voir la page appeler

$timeout = 3 //en seconde

if (monFileGetContentsCurl($url, $montrerContenu, $timeout) == false)

exit();

Modifié par devildant
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.