lib - La función PHP ssh2_connect no funciona
ssh2 pecl (7)
Lo siguiente es mi guion:
<?php
$connection = ssh2_connect(''XX.XX.XX.XX'', 22);
ssh2_auth_password($connection, ''root'', ''******'');
$stream = ssh2_exec($connection, ''useradd -d /home/users/test -m testftp'');
$stream = ssh2_exec($connection, ''passwd testftp'');
$stream = ssh2_exec($connection, ''password'');
$stream = ssh2_exec($connection, ''password'');
?>
Muestra el siguiente error:
Fatal error: Call to undefined function ssh2_connect() in /home/chaosnz/public_html/fotosnap.net/test.php on line 2
¿Cómo puedo lidiar con esto?
Gracias
Estoy ejecutando CentOS 5.6 como mi entorno de desarrollo y lo siguiente funcionó para mí.
su -
pecl install ssh2
echo "extension=ssh2.so" > /etc/php.d/ssh2.ini
/etc/init.d/httpd restart
He instalado la extensión SSH2 PECL y funciona bien gracias a todos por su ayuda ...
Honestamente, recomendaría usar phpseclib, una implementación pura de PHP SSH2 . Ejemplo:
<?php
include(''Net/SSH2.php'');
$ssh = new Net_SSH2(''www.domain.tld'');
if (!$ssh->login(''username'', ''password'')) {
exit(''Login Failed'');
}
echo $ssh->exec(''pwd'');
echo $ssh->exec(''ls -la'');
?>
Es mucho más portátil, más fácil de usar y más funciones también.
Lo he resuelto en ubuntu 16.4 PHP 7.0.27-0 + deb9u y nginx
sudo apt install php-ssh2
Necesita instalar ssh2 lib
sudo apt-get install libssh2-php && sudo /etc/init.d/apache2 restart
eso debería ser suficiente para llevarte a la carretera
Para ampliar la respuesta de @neubert, si está usando Laravel 5 o similar, puede usar phpseclib de esta manera:
Ejecutar composer require phpseclib/phpseclib ~2.0
En tu controlador agrega
use phpseclib/Net/SSH2;
Luego utilícelo en un método de control como:
$host = config(''ssh.host'');
$username = config(''ssh.username'');
$password = config(''ssh.password'');
$command = ''php version'';
$ssh = new SSH2($host);
if (!$ssh->login($username, $password)) {
$output =''Login Failed'';
}
else{
$output = $ssh->exec($command);
}
Si está ejecutando un bomebrew en OSX, utilicé lo siguiente para instalarlo:
brew install php56-ssh2
Eso funcionó para mí. Lo saqué de aquí . También debería haber Ubuntu y OSX usando el puerto mac también.