无法通过php_exec创建ssh隧道

时间:2014-02-08 18:58:04

标签: php apache shell-exec

我正在尝试通过php创建一个临时隧道,以便我可以查询远程数据库。 下面的代码通过php-cli和shell命令工作,但是当我通过apache运行时它似乎没有做任何事情:

$connect = "ssh -i remotekey -f -L 3315:localhost:3306 user@<remote IP> sleep 20 >> /tmp/logfile";
$out = shell_exec($connect);

一些注意事项:

  • remotekey由wwwrun(openSuse下的apache用户)所有,烫发是600
  • 创建/ tmp中的日志文件(并且为空白)
  • safe_mode已关闭
  • 使用PHP 5.3.17

打开网站后,我检查后台ssh的正在运行的进程,什么也没得到。

如果我通过php-cli运行它,我看到隧道正在运行。

这让我发疯了。任何帮助将不胜感激。

更新

由于远程服务器不在apache用户的known_hosts文件中,因此该命令因为apache用户而无声地失败。 使用以下命令运行命令:

-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

规避了这一点,隧道现在正常运作。

感谢有帮助的人在评论中指出了正确的方向。

0 个答案:

没有答案