alice
2 つ以上のプライベート リポジトリを持つ github.com ユーザーだとしましょうrepoN
。repo1
この例では、 とという名前の 2 つのリポジトリのみを使用します。repo2
https://github.com/alice/repo1
https://github.com/alice/repo2
おそらくサーバーまたは複数のサーバーで、パスワードを入力せずにこれらのリポジトリからプルする必要があります。git pull origin master
たとえば、実行したいのですが、パスワードを要求せずにこれを実行したいとします。
あなたは ssh-agent を扱うのが好きではありません。~/.ssh/config
ホスト名とユーザー名に応じて使用する秘密鍵を ssh クライアントに知らせるファイルを発見しました (または現在発見しています)。次のような単純な構成エントリがあります。これ:
Host github.com
HostName github.com
User git
IdentityFile /home/alice/.ssh/alice_github.id_rsa
IdentitiesOnly yes
先に進んで(alice_github.id_rsa, alice_github.id_rsa.pub)
キーペアを作成し、次にリポジトリの.git/config
ファイルに移動して、リモートの URL を次のように変更しましたorigin
。
[remote "origin"]
url = "ssh://git@github.com/alice/repo1.git"
最後に、リポジトリSettings > Deploy keys
セクションに移動して、alice_github.id_rsa.pub
この時点でgit pull origin master
、パスワードを入力しなくても問題なく実行できます。
しかし、2 番目のリポジトリはどうでしょうか。
したがって、あなたの本能はそのキーを取得してrepo2
の Deploy キーに追加することですが、github.com はエラーを出して、キーが既に使用されていることを通知します。
次に、別のキーを生成して (ssh-keygen -t rsa -C "alice@alice.com"
もちろんパスワードなしで使用します)、これが混乱しないように、次のようにキーに名前を付けます。
repo1
キーペア:(repo1.alice_github.id_rsa, repo1.alice_github.id_rsa.pub)
repo2
キーペア:(repo2.alice_github.id_rsa, repo2.alice_github.id_rsa.pub)
新しい公開鍵repo2
を github.com の Deploy keys 構成に配置しますが、対処すべき ssh の問題があります。
github.com
リポジトリが同じドメインでホストされている場合、ssh はどのキーを使用するかをどのように判断できますか?
.ssh/config
ファイルが指してgithub.com
いて、プルを実行するときにどのキーを使用すればよいかわかりません。
そこで、github.com でトリックを見つけました。各リポジトリが異なる github.com サブドメインにあることを ssh クライアントに伝えることができますrepo1.github.com
。repo2.github.com
そのため、最初にレポ クローンのファイルを編集し.git/config
ます。代わりに、次のようになります。
レポ1の場合
[remote "origin"]
url = "ssh://git@repo1.github.com/alice/repo1.git"
repo2 の場合
[remote "origin"]
url = "ssh://git@repo2.github.com/alice/repo2.git"
そして、.ssh/config
ファイルで、各サブドメインの構成を入力できるようになります:)
Host repo1.github.com
HostName github.com
User git
IdentityFile /home/alice/.ssh/repo1.alice_github.id_rsa
IdentitiesOnly yes
Host repo2.github.com
HostName github.com
User git
IdentityFile /home/alice/.ssh/repo2.alice_github.id_rsa
IdentitiesOnly yes
git pull origin master
これで、両方のリポジトリからパスワードを入力せずに実行できるようになりました。
複数のマシンがある場合は、各マシンにキーをコピーして再利用できますが、マシンとレポごとに 1 つのキーを生成するように脚の作業を行うことをお勧めします。処理するキーが増えますが、1 つが侵害された場合の脆弱性は低くなります。