4

ssh エージェント転送を使用して、Symfony2 プロジェクトをサーバーにデプロイします。これは問題なく動作し、capistrano を使用して github から git clone などを実行しても問題はありません。

ただし、Symfony2 の場合、bin/vendors install を実行して最新の dep を取得する必要があります。このベンダー スクリプト ( https://github.com/symfony/symfony-standard/blob/2.0/bin/vendors ) は、git pull のような「system()」コマンドを実行する php スクリプトです。

capifony (capistrano と symfony のアドオン) では vendors コマンドが実装されており、try_sudo を使用するように少し変更しました。これは、独自のホスティング プラットフォームのために必要な変更です。これは、github からの公開 https:// URL に最適です。

try_sudo "sh -c 'cd #{latest_release} && #{php_bin} bin/vendors install'"

私たちが直面している問題は、git@github.com 形式を使用している場合 (一部のプライベート リポジトリに必要であり、バンドルを変更して変更をプッシュ バックする場合)、ssh-agent を使用できないため、転送されたキーが見つからないことです。許可拒否エラーが発生します。

  • https:// 形式への切り替えは簡単に解決できるように思えますが、プライベート リポジトリではパスワードが要求されます。
  • system() コマンドで ssh-agent を起動すると機能しましたが、キーがまだありません。

そのため、これ以上何を探すべきかわかりません。ssh-agent を php ベンダー スクリプトに渡す方法はありますか?

更新

セキュリティ上の理由から、sudoはすべての環境変数を削除するため、既存のsshエージェントに接続することはできません。

https://serverfault.com/questions/107187/sudo-su-username-while-keeping-ssh-key-forwardingで、エラーと解決策の両方を見つけました。Defaults env_keep+=SSH_AUTH_SOCK を /etc/sudoers に追加し、sudo を実行しているユーザーがアクセスできるようにエージェント ソケットを chmod することで、ssh エージェントを維持できます。

ただし、スレッドを注意深く読んでください。そうするのは安全ではありません。ログアウトするとエージェントが破棄されるため、信頼できないユーザーのいないサーバーと組み合わせたカピストラーノ展開シーケンスでは、許容できると思います。私が間違っていなければ?

4

0 に答える 0