1

Capistrano 和 Rocketeer 在私钥密码方面的区别在哪里?

我已经正确设置了 Capistrano 和 Rocketeer 部署策略并且可以正常工作。Capistrano 让ssh-agent 提供密码短语- Rocketeer 似乎没有。问题不在于如何,而是为什么需要密码。

背景:

我想使用Rocketeer来部署 Laravel 应用程序而不是 Capistrano。似乎它将 SSH 连接委托给 Laravel。

在配置中仅设置远程服务器的名称并运行检查后,在提示输入凭据后,Rocketeer 将所需的密码和我所需私钥的路径存储在非版本控制的文件中。

我不想将用于建立 SSH 连接的凭据存储在我的磁盘上——尤其是的任何私钥的密码。

那么,为什么除了需要服务器名称之外还有其他内容?

我看到 Laravel 在其远程配置中准备了这些字段 - 我只是无法找出最终负责的组件以及为什么它没有将 SSH 连接完全留给系统本身。

RocketeerLaravelSymfonyphpseclib还是php本身需要这么多信息来建立 SSH 连接?

4

2 回答 2

3

这是 Laravel 缺少 phpseclib 的 ssh-agent 的实现,它需要很多信息来建立 SSH 连接。

这就是为什么 Rocketeer 不允许像 Capistrano 那样依赖用户名/密码和私钥/密码验证旁边的 ssh-agent。

提出合并了一项提案,以包括 phpseclib使用 ssh-agent而不是显式密钥的未记录实现。

Rocketeer 将从中受益,因为它依赖于 Laravel 中 phpseclib 的上述实现。

(感谢@hannesvdvreken、@ThomasPayer 和@passioncoder 指出正确的方向)

于 2014-04-23T14:18:22.540 回答
2

有些事情你可能想知道。

您可以使用默认值app/config/remote.php,也可以使用config.php发布在app/packages/anahkiasen/rocketeer.

我倾向于使用 Laravel 文件。我将该文件的副本复制到app/config/developmentgit 忽略的文件夹中.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',
        ),
    ),
);

希望这可以帮助。

于 2014-04-18T23:35:01.677 回答