45

以下是我的脚本:

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

我该如何处理?

谢谢

4

10 回答 10

26

我已经安装了 SSH2 PECL 扩展并且它工作正常感谢大家的帮助...

于 2012-12-27T06:41:04.330 回答
26

老实说,我建议使用 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');
?>

它更便携,更易于使用并且功能也更多。

于 2013-01-02T21:01:57.660 回答
16

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

sudo apt install php-ssh2 
于 2018-04-09T13:27:05.287 回答
13

您需要安装ssh2 库

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

这应该足以让你上路

于 2015-05-06T13:41:55.990 回答
8

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

brew install php56-ssh2

这对我有用。我把它从这里拉了出来。还应该有使用 mac 端口的 Ubuntu 和 OSX。

于 2015-10-07T17:05:53.537 回答
3

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

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

/etc/init.d/httpd restart
于 2013-10-31T13:37:32.643 回答
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);
 }
于 2017-04-26T03:57:23.203 回答
2

今天pecl install ssh2需要旧版本的 php (<=6.0)。在这里https://pecl.php.net/package/ssh2你可以看到支持 php7 和 php8 的 ssh2 的最新 beta 版本。所以你应该安装其中之一:

pecl install ssh2-1.3.1

* 不要忘记ssh2.so在你的 php.ini 文件中启用这个扩展。

于 2021-10-06T14:39:13.753 回答
1

WHM面板

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

yum install libssh2-devel -y

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

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

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

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

是的

ssh2_connect() 工作!

于 2020-11-30T09:03:44.567 回答
0

我知道有答案,但我只是在这里简化答案。

我有同样的问题,我在 ubuntu 20 中使用以下解决方案修复了它:

sudo apt-get install libssh2-1 php7.1-ssh2 -y

您可以根据需要更改 php 版本,例如:php7.4-ssh2

参考:https ://blog.programster.org/ubuntu-16-04-install-php-ssh2-extension

于 2022-02-25T12:15:36.453 回答