Php ssh2_exec未执行简单命令

Php ssh2_exec未执行简单命令,php,windows,libssh2,Php,Windows,Libssh2,我遇到了一个噩梦:在Windows中拒绝执行命令时出现了ssh\u exec()问题。 这是我的密码: <?php $connection = ssh2_connect('localhost', 22); ssh2_auth_none($connection, 'root'); $stream = ssh2_exec($connection, 'C:\Program Files\CCleaner\CCleaner.exe',FALSE); ?> 它

我遇到了一个噩梦:在Windows中拒绝执行命令时出现了
ssh\u exec()
问题。
这是我的密码:

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

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


它向我显示以下警告:
无法从
中的远程主机请求频道。如果你有什么建议,请告诉我。谢谢。

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

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

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

尝试“无”身份验证,该验证通常会(并且应该)失败

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

如果您试图用PHP< StRe>远程执行命令,作为管理员用户,这可能是一个坏主意,那么您可以考虑使用与Windows相结合的命令。或者您可以只运行管理员的Web服务器,这是非常容易做到的,并且<强>对安全性< /强>非常不利。

通过在Windows()上安装一个SSH服务器,您基本上可以实现上面尝试的操作——之后,您必须使用现有的用户登录到服务器,并使用该用户的密码(或者创建用户“root”并使用该用户)。 根据SSH服务器的安装情况,运行命令
C:\Program Files\CCleaner\CCleaner.exe
可以按照上述方式工作

在Linux中有更多的例子说明了如何实现这一点,不同的方法有不同的优缺点


添加此命令的结果是什么:
如果(!$connection){die(“连接失败”);}
<?php       
$connection = ssh2_connect('localhost', 22);
ssh2_auth_none($connection, 'root');

$stream = ssh2_exec($connection, 'C:\Program Files\CCleaner\CCleaner.exe', false);
stream_set_blocking ($stream, true);