【发布时间】:2011-12-06 09:14:12
【问题描述】:
我知道这个问题以前曾以许多不同的方式被问过,但我仍然在为为什么我不能让它工作而摸不着头脑。
首先,我设置了两台 SLES 服务器,它们是服务器 A 和服务器 B,它们都在一个小型专用网络上运行,只有专门的团队才能访问。
服务器 A 被配置为运行 Apache、PHP、MYSQL 和 ssh 的 Web 服务器,所有这些都运行正常。
服务器 B 用于运行安装并激活了 ssh 的琐碎任务。
我在服务器 A 上创建了我的 rsa 密钥并将其安装在服务器 B 上,当在命令行运行时,我会立即登录,而无需输入密码。我已经为服务器 A 上的 root 和nobody 帐户重复了这个过程。
我已将此 PHP 页面添加到服务器 A,如下所示:
<?php
shell_exec('ssh root@192.162.0.5 ./StartTest.sh');
header("Location: archive.php?page=home");
?>
但是当我运行它时,它不会创建我的文件夹。如果我从命令行运行它,它适用于两者(我认为两者都适用,我不记得我是否确实为cli上的nobody帐户尝试过这个)root和nobody帐户。我什至将nobody 帐户添加到root 组,但仍然没有乐趣。
我在这里错过了什么吗?我想做的就是通过 php & ssh 从服务器 A 连接到服务器 B 以执行一个命令并重定向到网站上的另一个页面。
由于我的扑热息痛库存不足,我们将不胜感激任何帮助。
【问题讨论】:
-
也许这会有所帮助:shell_exec 可能会使用不同于您的 shell。并在不同的用户下。找出它使用哪个 shell 和哪个用户,然后将您的 .ssh 配置复制到那里 - 或设置适当的环境变量,无论导致问题。您还可以使用 ssh 输出调试内容,检查开关。
-
还可以考虑使用 PHP 内置的
ssh2_connect和ssh2_auth_pubkey_file和ssh2_exec来完成这项任务。
标签: php linux ssh shell-exec