Grant Symfony2 www-data connect SSH



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

问题是:

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

我使用一个 Symfony2 命令,我从以下位置调用:

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

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

如果我使用 check:apache:install 调用我的命令 crom CLI,没关系,因为我在 root 中使用它。

但是,如果我尝试通过使用此代码调用控制器来从页面启动该命令:

$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/主目录上创建一个 .ssh/目录并生成 ssh-key,将 id_rsa.pub 放在远程服务器上...我可以使用任何密码或类似的东西使用 www-data 连接到root@remote_server,但是当我通过 Symfony2 应用程序使用我的 Web 浏览器启动它时,它不起作用。

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

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

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

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

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

谢谢你帮助我。

创建一个 www 数据密码以便能够与 su www-data 连接,以及 在/var/www/主目录上创建一个 .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

相关内容

最新更新