[解決済み] 複数のgithubプロジェクトで同じデプロイキーを使用する場合
質問
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
環境変数を設定する必要があります。
関連
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] git に自分の好きなエディタを使わせてコミットするにはどうしたらいいですか?
-
[解決済み] ある特定のコミットのコミット作者を変更する方法は?
-
[解決済み] Git で現在のコミットのハッシュを取得する方法は?
-
[解決済み] Git上でシェルコマンドを実行する際に使用するSSH-keyの秘密鍵を指定する方法は?
-
[解決済み] 新しい鍵を作成せずに、SSH鍵のパスフレーズを削除するにはどうすればよいですか?
-
[解決済み] 同じパソコンで複数のGitHubアカウント?
-
[解決済み】Gitバージョン管理でファイルの変更履歴を見る
-
[解決済み】Gitで複数のコミットの著者名やコミッター名、Eメールを変更する方法は?
-
[解決済み] フォルダからサブモジュールのリポジトリを作成し、そのgitコミット履歴を保持する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
致命的 リモートレフマスターが見つからない
-
gpg: "xxx" をスキップ: 秘密鍵のための1つの解決策が利用できない
-
GitのPlease enter a commit messageで、このマージが必要な理由を説明してください。
-
Git エラー: ヒント: リモートにあなたが持っていない作業が含まれているため、更新が拒否されました ヒント: あなたが持っていない作業です。
-
giteaを使ったGitサービスの構築
-
fatal: パス仕様 'readme.txt' がどのファイルにもマッチしなかった Solution
-
[解決済み] 単一ファイルのマージをやり直す
-
[解決済み] なぜgit AuthorDateはCommitDateと違うのですか?
-
[解決済み] GitとSSH、どちらのキーを使うか?
-
[解決済み] Git タグリスト、コミット sha1 ハッシュの表示