Подтвердить что ты не робот

Функция PHP ssh2_connect не работает

Ниже приведен мой script:

    <?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');
    ?>

Отображается следующая ошибка:

Fatal error: Call to undefined function ssh2_connect() in /home/chaosnz/public_html/fotosnap.net/test.php on line 2

Как я могу справиться с этим?

Спасибо

4b9b3361

Ответ 1

Я установил расширение SSH2 PECL, и он отлично работает благодаря всем вам за помощь...

Ответ 2

Честно говоря, я бы рекомендовал использовать phpseclib, чистую реализацию PHP SSH2. Пример:

<?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');
?>

Это тонна более переносимая, удобная в использовании и еще более функциональная.

Ответ 3

Если вы используете bomebrew в OSX, я использовал следующее для его установки:

brew install php56-ssh2

Это сработало для меня. Я вытащил его из здесь. Также должны быть Ubuntu и OSX с использованием порта Mac.

Ответ 4

Вам нужно установить ssh2 lib

sudo apt-get install libssh2-php && sudo /etc/init.d/apache2 restart

что должно быть достаточно, чтобы вы в пути

Ответ 5

Я запускаю CentOS 5.6 в качестве среды разработки, и для меня это работало.

su -
pecl install ssh2
echo "extension=ssh2.so" > /etc/php.d/ssh2.ini

/etc/init.d/httpd restart

Ответ 6

Чтобы расширить ответ @neubert, если вы используете Laravel 5 или аналогичный, вы можете использовать phpseclib гораздо проще:

Выполнить composer require phpseclib/phpseclib ~2.0

В вашем контроллере добавьте

use phpseclib\Net\SSH2;

Затем используйте его в методе контроллера, например:

 $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);
 }