1. ホーム
  2. git

[解決済み] 複数のgithubプロジェクトで同じデプロイキーを使用する場合

2022-09-30 17:04:47

質問

Github では、同じ ssh デプロイ キーを複数のプロジェクトに使用することができません。これは、いくつかのケースでは非常に便利です (たとえば、プライベート サブモジュールを持つプロジェクトを扱う CI サーバーなど)。私は、この制限が「セキュリティ上の理由」のためにあると言うような様々なスレッドを見ましたが、それがどのようなリスクをもたらすかについての説得力のある説明をまだ見ていません。

Github が アカウント レベル キーを再利用できないという事実は理にかなっています (2人のユーザーがキーを共有するべきではありません)。あくまでも キーをデプロイする に対する制限だけです。

そして、はっきりさせるために、私は ではない 回避策 (ダミー ユーザーの作成、複数のキーの使用など) を探しているのではなく、Deploy Keys のこの制限についてもっともらしい説明を探しているだけです。

関連するスレッド

どのように解決するのですか?

あなたが参照した回避策によって示された唯一の理由 (単一の "build" ユーザーを作成する、または同じ id_rsa.REPONAME.pub per repo) です。

ユーザごとに公開鍵・秘密鍵を共有することを避ける。

あなたの状況 (複数のプロジェクトをビルドする) ではそうでないとしても、同じ ssh キーを再利用できるようにすると、2 つの可能性が開けます。 異なる ユーザが同じ ssh キーを共有する可能性があり、その場合は 認証 の目的が果たせなくなります。

認証の意味

"ある ssh キーを使用することは、次のことを意味するはずです。 を知っている がそれを使用していることを意味するはずです" 。


GitHubのページ" デプロイキーを管理する sshを使った様々なアカウントについて詳しく説明しています。

  • SSH エージェント転送 : エージェント転送は、サーバーにSSH接続してgitコマンドを実行する際に、ローカルの開発マシンにすでに設定されているSSHキーを使用します。

    あたかもローカルのssh-agentがサーバー上で動作しているかのように、リモートサーバーから選択的にアクセスさせることができます。

    そのため、サーバー上に秘密鍵を複製する必要はありません。

  • マシンユーザー : (これはダミーアカウント作戦です。) ユーザーアカウントにキーを付けます。このアカウントは人間には使われないので、マシン・ユーザーと呼ばれる。

    このユーザーを人間と同じように扱い、マシンユーザーアカウントに通常のアカウントと同じようにキーを付けます。

    このアカウントの共同作業者またはチームに、アクセスが必要なレポへのアクセスを許可します。

    つまり、1つの秘密鍵が1つのquot;マシン・ユーザー"に関連付けられ、1つのサーバーに1つです。

( DHa ポイント をコメントで をデプロイキーの制限数、およびマシン ユーザー アカウントを 1 つだけ持つことができるという事実について指摘しています)。

  • デプロイキー (GitHubのレポにつき1つ) サーバー上に保存され、GitHub上の単一のレポへのアクセスを許可するSSHキー。

    この鍵は、ユーザーアカウントではなく、直接レポに添付されます。 .

    アカウント設定に行くのではなく、対象レポの管理画面に行きます。

    "に移動します。 Deploy Keys "をクリックし、" Add deploy key "をクリックします。公開鍵を貼り付け、送信します。

今回、sshキーはユーザー(複数のレポへのアクセスを許可することができる)ではなく、1つのレポに添付されています。

のためにsshアクセスを許可する 複数の レポのための ssh アクセスを許可することは、"マシン ユーザー" に相当します。

の用語で 認証 :

  • 同じキーを複数のリポジトリに使用することは、(そのキーを自分のアカウントに関連付けた)ユーザーによって行われる場合は問題ありません。
  • 同じキーを複数のリポジトリで使用することは、キーがリポジトリにアタッチされている場合、全く分からないので、問題ありません。 は何にアクセスしたのか。

    これは、"machine user" が多くのレポのコラボレーターとして宣言されるのとは異なります。

    ここ(Deployキー)です。 はありません。 のように、レポに直接sshでアクセスできるようにしただけです。

ユスフ・バーブラワラ では、このモデルの制限をさらに詳しく説明しています。 コメント :

<ブロッククオート

Pythonプロジェクトがプライベートなpipモジュールを使っている、あるいはnodeプロジェクトがプライベートなnpmパッケージを使っている-どちらも同じ組織内の別のレポからのものです。

現在、デプロイキーまたはアカウントキーのいずれかを使用して、この非常に単純なユースケースをデプロイする方法はありません (これはあまりにも多くの他のレポを公開します)。

そして クリス・ステンカンプ は、"に指摘する。 を発見する方法 ' pip install git+ssh://... はどこで検索しているのか? を設定する必要があります。 GIT_SSH_COMMAND 環境変数を設定する必要があります。