PHP函数ssh2_connect无法正常工作

时间:2012-12-27 06:13:36

标签: php ssh

以下是我的剧本:

    <?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

我该如何处理?

由于

8 个答案:

答案 0 :(得分:19)

老实说,我建议使用phpseclib,pure PHP SSH2 implementation。例如:

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

它更便携,更易于使用,功能更强大。

答案 1 :(得分:18)

我已经安装了SSH2 PECL扩展程序并且它工作正常,感谢所有人帮助...

答案 2 :(得分:12)

您需要安装ssh2 lib

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

应该足以让你上路

答案 3 :(得分:8)

如果您在OSX上运行bomebrew,我使用以下命令安装它:

brew install php56-ssh2

这对我有用。我从here取出它。还应该有使用mac端口的Ubuntu和OSX。

答案 4 :(得分:5)

我已经在ubuntu 16.4 PHP 7.0.27-0 + deb9u和nginx上解决了这个问题

sudo apt install php-ssh2 

答案 5 :(得分:2)

要扩展@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);
 }

答案 6 :(得分:1)

我正在运行CentOS 5.6作为我的开发环境,以下内容对我有用。

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

/etc/init.d/httpd restart

答案 7 :(得分:0)

用于WHM面板

菜单>服务器配置>终端:

yum install libssh2-devel -y

菜单>软件>模块安装程序

  1. PHP PECL管理点击
  2. ssh2立即安装单击

菜单>重新启动服务> HTTP服务器(Apache)

确定要重新启动此服务吗?

ssh2_connect()工作!

相关问题