Capistrano和Rocketeer在私钥密码中的区别在哪里?
我已经正确设置了Capistrano和Rocketeer部署策略并且正常工作。 Capistrano让 ssh-agent提供密码 - Rocketeer,因为它似乎没有。问题不在于如何,而是为什么需要密码短语。
背景:
我想使用Rocketeer来部署Laravel应用程序而不是Capistrano。好像它将SSH连接委托给Laravel。
在配置中仅设置远程服务器的名称并运行检查后,在提示输入凭据后,Rocketeer会将所需的密码短语和路径存储到非版本控制文件中的所需私钥。
我不想拥有用于建立存储在我的磁盘上的SSH连接的凭据 - 尤其是不密码到我的任何私钥。
那么,为什么还需要服务器的名称呢?
我看到Laravel在其遥控器配置中准备了这些字段 - 我无法找出最终负责哪个组件以及为什么它不会将SSH连接完全留给系统本身。
Rocketeer , Laravel , Symfony , phpseclib 甚至 php 本身下面需要很多信息来建立SSH连接?
答案 0 :(得分:3)
这是Laravel缺少phpseclib ssh-agent的实现,需要很多信息才能建立SSH连接。
这就是为什么Rocketeer不允许像Capistrano一样依赖用户名/密码和私钥/密码认证旁边的ssh-agent。
提案stated和merged包含phpseclib的undocumented implementation for using the ssh-agent而不是明确的密钥。
Rocketeer将从中获益,因为它依赖于在Laravel中实施的phpseclib。
(感谢@hannesvdvreken,@ TomasPayer和@passioncoder指向正确的方向)
答案 1 :(得分:2)
有些事情你可能想知道。
您可以使用默认app/config/remote.php
,也可以使用在config.php
下发布的Rocketeer app/packages/anahkiasen/rocketeer
。
我倾向于使用Laravel文件。我将该文件的副本复制到app/config/development
文件夹中,该文件夹被git忽略.gitignore
。我只在该文件中记下私钥的密码。它将与app/config/remote.php
中的数组合并。
这是我的app/config/development/remote.php
文件:
return array(
'connections' => array(
'staging' => array(
'keyphrase' => 'your-secret-here',
),
'production' => array(
'keyphrase' => 'your-secret-here',
),
),
);
希望这有帮助。