Ответ 1
Я установил расширение SSH2 PECL, и он отлично работает благодаря всем вам за помощь...
Ниже приведен мой 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
Как я могу справиться с этим?
Спасибо
Я установил расширение SSH2 PECL, и он отлично работает благодаря всем вам за помощь...
Честно говоря, я бы рекомендовал использовать 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');
?>
Это тонна более переносимая, удобная в использовании и еще более функциональная.
Если вы используете bomebrew в OSX, я использовал следующее для его установки:
brew install php56-ssh2
Это сработало для меня. Я вытащил его из здесь. Также должны быть Ubuntu и OSX с использованием порта Mac.
Вам нужно установить ssh2 lib
sudo apt-get install libssh2-php && sudo /etc/init.d/apache2 restart
что должно быть достаточно, чтобы вы в пути
Я запускаю CentOS 5.6 в качестве среды разработки, и для меня это работало.
su -
pecl install ssh2
echo "extension=ssh2.so" > /etc/php.d/ssh2.ini
/etc/init.d/httpd restart
Чтобы расширить ответ @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);
}