Grant Symfony2 www-data connect SSH

时间:2016-02-25 16:27:23

标签: php symfony ssh apache2 command-line-interface

我被一个非常悲伤的问题阻止了......几个小时以来......

问题在于:

我尝试创建一个Symfony2 webapp,需要通过许多服务器上的ssh协议进行连接。

我使用了一个Symfony2命令,我打电话来:

$process = new Process('ssh root@'.$ipInput.' apache2 -v');

(其中$ ipInput是在SF2命令中设置为第一个参数的IP地址)

如果我使用check:apache:install调用我的Command crom CLI,那没关系,因为我将它用于root。

但是如果我尝试通过使用以下代码调用Controller来从页面启动该命令:

$kernel = $this->get('kernel');
$application = new Application($kernel);
$application->setAutoExit(false);

$input = new ArrayInput(array(
   'command' => 'check:apache:install',
   'ip' => '192.99.36.205',
));

$output = new BufferedOutput();
$application->run($input, $output);

$content = $output->fetch();
echo $content;

它让我回复:

  

主机密钥验证失败。

我尝试了什么:

  • 创建一个www-data密码,以便能够与su www-data连接,并在/ var / www / home目录下创建一个.ssh /目录并生成ssh-key,将id_rsa.pub置于其上远程服务器...我可以使用任何密码或类似的东西连接到带有www-data的root @ remote_server,但是当我使用我的Web浏览器通过Symfony2应用程序启动它时,它不起作用。

  • 我从谷歌阅读了很多页面,但没有一个帮助我。

我知道让www-data通过SSH连接是非常贪心的,但我不知道如何检查远程服务器上是否安装了某些软件包。

要明确的是,我已经有15台已经投入生产的远程服务器和许多未来的服务器了。对于每个服务器,我需要在启动自动安装LMS之前检查Web环境。

如果有人想要在没有授权ssh访问www-data的情况下这样做,我会非常认真地听。

我不想在每个远程服务器上安装PHP脚本,并使用HTTP请求或类似的方式调用它们。

感谢您帮助我。

1 个答案:

答案 0 :(得分:0)

  

创建一个www-data密码,以便能够与su www-data连接,以及   在/ var / www / home目录下创建一个.ssh /目录并生成   ssh-key,将id_rsa.pub放在远程服务器上......我能够   使用www-data连接到root @ remote_server并使用任何密码或   类似的东西,但当我用我的网络浏览器启动它   Symfony2应用程序,它不起作用。

您需要使用ssh命令指定标识 假设您的id_rsa位于/var/www/.ssh/id_rsa ssh -i '/var/www/.ssh/id_rsa' root@remote_server