PHP shell_exec用ssh运行一个shellcript

时间:2010-11-08 10:42:54

标签: php ssh rsa shell-exec

我有一个shellcript,连接到一台带有ssh和密钥的不同机器,所以它不需要用户名和密码。

当我从命令行运行此脚本时它工作正常..但是当我从php shell_exec运行此脚本时,它不起作用。

如果我与PHP建立ssh连接并以自己的用户身份运行脚本,那么它确实有效。

现在我的问题:D 有没有办法在php shell_exec中运行脚本而不通过ssh作为其他用户建立连接?

3 个答案:

答案 0 :(得分:1)

您是否正确指定了私钥文件?

答案 1 :(得分:0)

如果您使用的是Ubuntu或Debian,则使用用户名 www-data 运行Web服务器。对于其他系统,请检查Web服务器配置以获取用户名。您可以简单地测试此用户(以及您的php Web应用程序)是否能够进行SSH连接。

1)成为您的网络服务器的用户

sudo su www-data

2)尝试连接远程主机

ssh remoteUser@remoteHost

如果您在未输入密码的情况下进行连接,则必须存在其他问题。如果您必须输入密码,则会为其他用户存储密钥文件,而不是 www-data 。您已经配置了SSH以使用密钥。为您的本地用户 www-data 执行相同操作,它将起作用。

答案 2 :(得分:0)

似乎ssh连接无法与shell_exec一起使用。如果我在shellscript下运行ssh2_exec,它似乎确实有效。

这有点奇怪,因为在脚本文件中使用公钥和私钥进行ssh连接。我会假设这只会运行:s

允许Web服务器执行该文件,因为其中有其他命令按预期工作。