ssh2_exec不执行简单命令

2023-11-25

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.


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

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

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

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

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

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

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

  • Windows 有“sudo”命令吗?
  • 如何以管理员身份运行 PHP

关于如何在 Linux 中实现此目的的示例有很多,不同的方法有不同的优点和缺点。

  • 通过 PHP 执行 root 命令
  • 如何以 root 身份运行 PHP exec()?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ssh2_exec不执行简单命令 的相关文章

随机推荐