質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.20%

PHP Deployerのデプロイ時のGitアカウントの入力を省略したい

解決済

回答 5

投稿

  • 評価
  • クリップ 1
  • VIEW 3,309

ucan-lab

score 769

前提・実現したいこと

https://deployer.org
PHPのデプロイツール「Deployer」の導入を検討しています。

目的としては、今までデプロイ先にsshして、ソースを更新して、ベンダーを更新して、アセットをビルドして...だったのを仮想開発環境内でコマンド1つでデプロイできるようにしたいです。

発生している問題・エラーメッセージ

デプロイ自体は問題なくできているのですが、
deploy:update_code タスクの実行時に毎回GitHubアカウントの入力を求められます。

➤ Executing task deploy:update_code
Failed to add the host to the list of known hosts (dev/null).
Username for 'https://github.com':

アカウントの入力を省略できれば、本当にコマンド1つでデプロイが完了するので嬉しいです。

試したこと

リポジトリの設定で Deploy keys という項目があったので、公開鍵を突っ込んで見たのですが特に変化もなく。。

補足情報(言語/FW/ツール等のバージョンなど)

  • Mac内にVagrantでCentOS7の環境を作っています。
  • deployerはCentOS内でコマンドを実行しています。
  • デプロイ先はAWS EC2サーバーにデプロイしてます。
  • GitHubはプライベートリポジトリを使っています。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

+3

GitHubが公式に案内しているのはこちらの4つかと思います。
結論としては、質問者さんの要件に照らし合わせて、上記の中から選択することを推奨します。

質問者さんも使用されているHTTPSアクセスでも、以下のようにすれば解決できると思いますが、セキュリティ的によろしくないです。

https://<username>:<password>@github.com/deployer/repo.git

以下のOAuthトークンによるHTTPSアクセスも、セキュリティ的によろしくないです。今回の場合、トークンは基本的にパスワードと同等なので。
一応手順としてはこちらを参考にトークンを作成し、以下のいずれかでアクセスします。

https://<token>@github.com/deployer/repo.git


または

https://<token>:x-oauth-basic@github.com/deployer/repo.git

また、上記の2つともクローン時に.git/configに平文でURLを書き出しされたと思います。
なので、採用はおすすめしません。

あと、解決されましたら、他の人のために「GitHub」タグを追加されたほうがよろしいかと思います。
Deployerは単純にgit cloneしているだけで、本質はGitHubへアカウント入力を省略してアクセスするにはどのような方法があるかということ(どのデプロイツールを使っても同じ)だと思いますので。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/07 13:17

    回答ありがとうございます。
    Gitでサーバーの認証情報は管理したくないのと、
    本番サーバー情報になるべく個人のGit認証情報を置きたくない(自分以外も触るので)
    デプロイ元の仮想環境内の設定ファイル `~/.ssh/config` で完結できれば理想です。

    GitHubのリンクありがとうございます。色々試してみようと思います。

    キャンセル

+2

方法は2つあると思います。

1つ目は、GitHubにSSHキーを使って認証する方法です。
SSH鍵の登録方法などは、SSHの公開鍵を作成しGithubに登録する手順が参考になるかと
※SSHキーのパスフレーズはなしにしておくといいと思います。
※deployerのrepositoryの設定はgit@github.com:xxxにします。

2つ目は、GitHubにPersonal access tokensを使って認証する方法です。
トークンの作成方法は、Github で OAuth Token を利用して clone/submodule するとかが参考になるかと
※deployerのrepositoryの設定は、https://<oauth-token>:x-oauth-basic@github.com/xxxにします

ちなみに、自分もdeployerを使っており、2つ目の方法でやっています。セキュリティ的には1つ目の方がよいかもしれません。


追記

deployerを実行するユーザがGitHubへのSSH秘密鍵を持っているなら、deployerのhost設定でforwardAgent(true)とすれば、SSHの鍵がデプロイユーザに渡されてそのままGitHubの認証に使うこともできます。
https://deployer.org/docs/hosts

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/07 13:16

    回答ありがとうございます。
    1つ目の方法でやりたいと思っています。

    複数人でデプロイする場合は個々にSSH key登録してもらう形でしょうか。
    Gitリポジトリ設定のデプロイキーに鍵を登録すれば使い回せたりしますでしょうか?
    (この辺りの知識が疎くて...)

    キャンセル

  • 2017/08/07 14:52 編集

    普段、開発メンバーの方々は、GitHubには1つ目の方法を使ってSSHでアクセスされているのでしょうか?
    であれば、その普段使っているSSH Keyをデプロイ時にも使えると思います。
    それが、追記に記載したforwardAgent(true)を使う方法です。実際にやってみましたが、うまく動きました。
    もし各自のSSHキーがないなら、デプロイするユーザのSSHキーをデプロイキーに設定すればよさそうですね

    キャンセル

0

.ssh/ssh_config に認証情報記述したら行けるのでは。
参考サイト

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/07 13:16

    回答ありがとうございます
    色々試してみようと思います。

    キャンセル

check解決した方法

-1

半年くらい経ちましたが...
最終的には次のように解消しました。

  1. 各ユーザーに公開鍵を登録してもらう。
    https://github.com/settings/keys

  2. deployerはssh接続でデプロイする。

  3. 仮想環境(vagrant)に秘密鍵を登録する。

  4. 仮想環境でssh-agentを起動する。

  5. 仮想環境でssh-addして秘密鍵を追加する。

4, 5が仮想環境を起動するたびに必要でした。
.bashrcに追記して毎回実行されるようにして運用しました。
これでデプロイ時にパスワードの入力は求められなくなりました。

ただ、半年運用していてデプロイのたびにvagrantを起動するのが煩わしくなり
Macに直接deployerをインストールして運用する形に落ち着きました。

ご回答頂いた方ありがとうざいました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-1

使ったことないので想像ですが、https://deployer.org/docs/hosts
の通りに環境を作ったのだとしたら、

->addSshOption('UserKnownHostsFile', '/dev/null')


の /dev/null を ~/.ssh/known_hosts みたいに通常のやり方に
したらうまくいかないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/07 13:16

    回答ありがとうございます。
    警告メッセージ...の問題ではなさそうですが何度もメッセージが出たら設定してみようと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.20%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る