php - ssh2_exec 不执行简单命令

标签 php windows libssh2

ssh_exec() 拒绝在 Windows 中执行命令。 这是我的代码:

<?php
$connection = ssh2_connect('localhost', 22);
ssh2_auth_none($connection, 'root');

$stream = ssh2_exec($connection, 'C:\Program Files\CCleaner\CCleaner.exe',FALSE);
?>

它向我显示以下警告:Unable to request a channel from remote host in

最佳答案

首先,您不太可能能够使用 ssh2_connect 连接到您的 Windows 服务器,因为 SSH 不是通常用于连接到 Windows 的协议(protocol),也不是可用的项目在任何 Windows 安装中。 其次,确保您已经在 Windows 服务器上创建了用户“root”,因为默认情况下它不存在。

或者 如果您实际上是 Windows 机器连接到 Unix/Linux 服务器,那么您正试图在其上运行 Windows 命令这一事实('C:\Program Files\CCleaner\CCleaner.exe '), 将失败。您只能在存在的远程服务器上执行命令,任何以“C:\”开头的命令显然都会失败,因为 Linux 具有与 Windows 完全不同的文件系统结构。

因此从上面的代码看来,您可能正在尝试使用没有密码的用户名“root”连接到 Linux 服务器(根据 PHP.net 手册(ssh2_auth_none:

Attempt "none" authentication which usually will (and should) fail.

但正如您所说,您正在尝试在 Windows 中执行命令,并且您正在连接到主机名为“localhost”的服务器 - 也许您实际上是在 Windows 上运行它,并且只是尝试使用 SSH 连接到Windows 服务器 - 这是毫无意义的,因为上面显示的 PHP 代码已经在 Windows 服务器上执行,使 SSH 连接完全多余,除非尝试以提升的权限(作为“root”)执行命令。

如果您尝试使用 PHP 作为管理员用户 远程执行命令,这可能是个坏主意,那么您可以考虑使用 function.exec.php命令结合 Windows runas command .或者您可以仅以管理员身份运行您的 Web 服务器,这很容易做到,但对安全性非常不利

通过在 Windows ( What are some good SSH Servers for windows? ) 上安装 SSH 服务器,您基本上可以实现上述目标 - 之后您必须使用现有用户登录服务器,并使用该用户的密码用户(或创建用户“root”并使用它)。 根据您的 SSH 服务器安装,运行命令 C:\Program Files\CCleaner\CCleaner.exe 可以按照上述方式工作。

在 Linux 中有更多的例子,不同的方法有不同的优点和缺点。

关于php - ssh2_exec 不执行简单命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15921960/

相关文章:

c++ - windows:是否可以将文本文件转储(直接)到命名管道中

插件更新 : No support for ssh2 stream timeout. 上的 WordPress 错误请使用 libssh2 >= 1.2.9 重新编译

C - libssh 和 sftp - 客户端/服务器 - 创建 sftp session 挂起

php - 将值插入我在 Magento 数据库中创建的新字段

c# - 如何以 username@domain 格式获取当前 Windows 用户名?

php - 更改单个事件的背景颜色

windows - 无法将模块/mod_ssl.so 加载到服务器中

ssh - Satis - ssh2.sftp 协议(protocol)出错

php - 使用复选框删除 Mysql 行

php - 如何只允许登录用户访问linux服务器上文件夹中的文件