簡體   English   中英

使用帶有密鑰的ssh進行部署,而無需提供私鑰的密碼(ssh-agent)

[英]Deployment using ssh with key without providing passphrase for private key (ssh-agent)

關於私鑰的密碼短語,Capistrano和Rocketeer之間的區別在哪里?

我已經正確設置了Capistrano和Rocketeer部署策略並可以正常工作。 Capistrano讓ssh-agent提供密碼短語 -Rocketeer似乎不提供。 問題不是關於如何,而是為什么需要密碼短語。

背景:

我想使用Rocketeer而不是Capistrano來部署Laravel應用程序。 似乎將SSH連接委托給Laravel。

在配置中僅設置了遠程服務器的名稱並運行檢查后,在提示輸入憑據后,Rocketeer將所需的密碼和我所需的私鑰的路徑存儲在非版本控制的文件中。

我不想在磁盤上存儲用於建立SSH連接的憑據-尤其是希望使用任何我的私鑰的密碼短語。

那么,為什么只需要服務器名稱呢?

我看到Laravel在其remotes配置中准備了這些字段-我只是找不到最終負責哪個組件,以及為什么它沒有完全將SSH連接留給系統本身。

是在下面需要大量信息才能建立SSH連接的RocketeerLaravelSymfonyphpseclib還是php本身?

Laravel缺少phpseclib的ssh-agent的實現,該實現需要許多信息來建立SSH連接。

這就是為什么Rocketeer不允許Capistrano依賴用戶名/密碼和私鑰/密碼驗證旁邊的ssh-agent。

有人提議 ,並合並到包括phpseclib的使用SSH代理無證執行 ,而不是一個明確的關鍵。

Rocketeer將從中受益,因為Rocketeer依賴於Laravel中所說的phpseclib實現。

(感謝@ hannesvdvreken,@ ThomasPayer和@passioncoder指向正確的方向)

您可能想知道一些事情。

您可以使用默認的app/config/remote.php ,也可以使用在app/packages/anahkiasen/rocketeer下發布的Rocketeer config.php

我傾向於使用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',
        ),
    ),
);

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM