我正在尝试通过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);
一些注意事项:
打开网站后,我检查后台ssh的正在运行的进程,什么也没得到。
如果我通过php-cli运行它,我看到隧道正在运行。
这让我发疯了。任何帮助将不胜感激。
更新
由于远程服务器不在apache用户的known_hosts文件中,因此该命令因为apache用户而无声地失败。 使用以下命令运行命令:
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
规避了这一点,隧道现在正常运作。
感谢有帮助的人在评论中指出了正确的方向。