Tema: SSH con PHP
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/05/2012, 14:52
Avatar de zapatapj
zapatapj
 
Fecha de Ingreso: mayo-2012
Ubicación: canada
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Información Respuesta: SSH con PHP

Buenas tardes,

Bueno ya veo que aun nadie ha contestado pero no importa, yo he seguido buscando una forma eficiente y eficaz de realizar una conexion SSH2 con un script de PHP para lograr enviar un comando. Navegando por la web me consegui con algunas personas que tampoco han logrado dar con este asunto asi que logre realizar un compendio de todas las experencias que pude leer y tengo 2 opciones. La primera es facil y la segunda un poco mas compleja.

Primera opcion(esta informacion es gracias a el Sr. Kevin, quien realizo este tutorial de como instanciar PECL SSH lo puedes ver [URL="http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/"]AQUI[/URL]
Antes de empezar deben saber que necesitan la libreria libssh2 para linux y luego descargar el modulo de PECL para SSH2. Los que trabajan en windows tambien pueden hacerlo(No se si funciona, yo lo probe y no funcionó) solo descarguen el php_ssh2.dll y agreguen el modulo en el php.ini lo mismo con el PECL.

Una vez que tengan todos y cada uno de los requisitos para hacer conexiones SSH2 con php nos vamos al codigo. Nuestro amigo Kevin nos explica que el primer metodo es con el comando exec(), el comando exec() lo que hace es abrir un terminal y enviar un comando el que quieras. Si estas en linux sabes que a traves de la consola puedes crear conexiones SSH sin mayores inconvenientes. Veamos el codigo

Código:
<?php
// Primero verificamos que la funcion SSH2 exista, si no existe no va a funcionar
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
// nos conectamos con el servidor mediante el puerto 22
if(!($con = ssh2_connect("server1.example.com", 22))){
    echo "fallo imposible realizar la conexion";
	//verifiquen que el server tenga habilitada la autenticacion con password si no no funciona
} else {
    // aqui se autentica con usuario y contraseña del servidor SSH
    if(!ssh2_auth_password($con, "root", "secretpassword")) {
        echo "Imposible autenticar";
    } else {
        // ya estamos dentro del servidor
        echo "Conexion exitosa";
 
        // le mandamos a ejecutar un comando mediante una consola
        if (!($stream = ssh2_exec($con, "ls -al" ))) {
            echo "fallo, no se puede enviar el comando";
        } else {
            // recolectamos la data que nos arrojo el comando
            stream_set_blocking($stream, true);
            $data = "";
            while ($buf = fread($stream,4096)) {
                $data .= $buf;
            }
			//importante cerrar o puede que nos rechaze la proxima conexion. A mi me paso muchas veces
            fclose($stream);
        }
    }
}
?>
como lo ven es el mismo codigo que el de Kevin solo que tiene algunas anotaciones mas. El otro metodo aun lo estoy probando pero ando un poco corto de tiempo asi que sera mas tarde. Pruebenlo, corranlo, critiquenlo y me dicen que tal. Estoy a la orden para sus dudas colegas!!!