首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ssh2_exec未执行简单命令

ssh2_exec未执行简单命令
EN

Stack Overflow用户
提问于 2013-04-10 17:27:36
回答 2查看 3.4K关注 0票数 5

我做了一个关于ssh_exec()拒绝在Windows中执行命令的噩梦。

下面是我的代码:

代码语言:javascript
复制
<?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。如果你有什么建议,请告诉我。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-10-07 17:27:28

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

如果您实际上是从Windows机连接到/Linux服务器,那么您尝试在其上运行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命令与 runas command结合使用。或者你可以仅仅以管理员的身份运行你的web服务器,这样做很容易,而且对安全来说非常糟糕。

你基本上可以通过在Windows (What are some good SSH Servers for windows?)上安装一个SSH服务器来实现上面你想要做的事情--之后你必须使用一个已经存在的用户登录到服务器上,并使用该用户的密码(或者创建用户'root‘并使用它)。根据您的SSH服务器安装,运行命令C:\Program Files\CCleaner\CCleaner.exe可以按照您上面描述的方式工作。

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

票数 1
EN

Stack Overflow用户

发布于 2015-10-28 09:11:39

代码语言:javascript
复制
<?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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15921960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档