我被一个非常悲伤的问题阻止了......几个小时以来......
问题在于:
我尝试创建一个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请求或类似的方式调用它们。
感谢您帮助我。
答案 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