Foros del Web » Programando para Internet » PHP »

SSH con PHP

Estas en el tema de SSH con PHP en el foro de PHP en Foros del Web. Saludos, estoy haciendo una aplicacion en la cual me conecto a un DNS mediante una conexion SSH2, lo estoy haciendo en linux con la extension ...
  #1 (permalink)  
Antiguo 05/05/2012, 17:01
Avatar de zapatapj  
Fecha de Ingreso: mayo-2012
Ubicación: canada
Mensajes: 2
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta SSH con PHP

Saludos,

estoy haciendo una aplicacion en la cual me conecto a un DNS mediante una conexion SSH2, lo estoy haciendo en linux con la extension PECL SSH2. Mi problema es que al correr el .php no hace nada. lo hice de 2 formas y no logro dar con la conexion. adjunto mi codigo para ver si alguien por favor puede ayudarme.


Código:
<?php
//Conexión al servidor dónde "shell.example.com" es el servidoy y 22 el puerto. 
$connection = ssh2_connect('shell.example', 22);

//Una vez conectados hay que autenticarse dónde $conecction es el manejador de la conexión y los otros valores son el usuario y la contraseña.
ssh2_auth_password($connection, 'user', 'pass');

//Por último ejecutamos el código en la máquina remota, dónde el primer parametro es el manejador de la conexión y el segundo el parametro en cuestión
$stream = ssh2_exec($connection, 'dig argumento')

//Todo esto se guardaría en la variable $stream que podemos mostrar de la siguiente forma
echo "<pre>";
print_r($stream);
echo "</pre>";
GRACIAS
  #2 (permalink)  
Antiguo 06/05/2012, 14:52
Avatar de 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!!!
  #3 (permalink)  
Antiguo 06/10/2014, 13:27
 
Fecha de Ingreso: octubre-2014
Mensajes: 1
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: SSH con PHP

me fue muy útil este articulo mi pana tremendo aporte esto te da un sin fin de posibilidades para administrar servidores desde una aplicación php o en mi caso para administrar aplicativos que estén en un servidor

Etiquetas: ssh, ssh2_exec
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:58.