Blog de Gonzalo

CONEXIONES SSH EN PHP

Igual que se pueden realizar conexiones ftp en php también se pueden realizar conexiones ssh. Para poder realizar conexiones ssh en php se puede usar la librería phpseclib de fuelphp. La verdad es que es una librería bastante útil y sencilla de utilizar. Un ejemplo bastante útil sería hacer un script para actualizar el servidor de producción ya sea con software o hacer una subida como lo hace deployer. La librería phpseclib se puede instalar usando composer.
Veamos un ejemplo

require __DIR__ . '/vendor/autoload.php';
//Se usa así en la versión 3
use phpseclib3\Net\SSH2;
$ssh = new SSH2( 'ip_servidor');

if ( !$ssh->login( 'user', 'password ) ) {
   exit( 'Login Failed' );
}
echo $ssh->exec( 'ls' );

En el ejemplo anterior se mostrará un listado de ficheros del directorio donde estemos conectados. A partir de este ejemplo se pueden probar varios comandos, comor ir a una ruta en concreto y hacer un git pull o un composer update, etc...
Hay que tener en cuenta que cada vez que se ejecuta $ssh->exec( 'comando' ); es como si se hiciese en una consola nueva, es decir, que si se hace:
echo $ssh->exec( 'ls' );
$ssh->exec( 'cd /ruta' );
echo $ssh->exec( 'ls' );

Mostrará el mismo resultado para mostrar el contenido de la ruta de la ruta habrá que hacer:
$ssh->exec( 'cd /ruta; ls' );

Es decir es necesario ejecutar los comandos necesarios por cada exec.