以下是我的脚本:
<?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
我该如何处理这个问题?
谢谢
老实说,我建议使用 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');
?>
它更加便携、更易于使用并且功能也更加丰富。
我已经安装了 SSH2 PECL 扩展,它工作正常,感谢大家的帮助...
我已经在 ubuntu 16.4 PHP 7.0.27-0+deb9u 和 nginx 上解决了这个问题
sudo apt install php-ssh2
如果您在 OSX 上运行 bomebrew,我使用以下命令来安装它:
brew install php56-ssh2
这对我有用。我从这里拉它。应该还有使用 mac 端口的 Ubuntu 和 OSX。
我正在运行 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);
}
今天
pecl install ssh2
需要旧版本的php(<=6.0). Here https://pecl.php.net/package/ssh2您可以看到支持php7和php8的最新beta版本的ssh2。所以您应该安装其中之一:
pecl install ssh2-1.3.1
* 不要忘记在 php.ini 文件中启用此
ssh2.so
扩展。
我知道有答案,但我只是在这里简化答案。
我有同样的问题,我在 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
适用于 WHM 面板
菜单 > 服务器配置 > 终端:
yum install libssh2-devel -y
菜单 > 软件 > 模块安装程序
菜单 > 重新启动服务 > HTTP 服务器 (Apache)
您确定要重新启动此服务吗?
是的
ssh2_connect() 工作了!
我觉得这个已有 11 年历史的讨论值得更新。我从 PHPSecLib 库切换到 PHP 7 和 8 的内置 SSH2 库,因为它似乎连接速度更快并且更标准。现在它还可以使用密钥密码,因此无需再使用第 3 方库。