alice
2つ以上のプライベートリポジトリを持つgithub.comユーザーであるとしましょうrepoN
。repo1
この例では、とという名前の2つのリポジトリのみを使用します。repo2
https://github.com/alice/repo1
https://github.com/alice/repo2
おそらくサーバーまたは複数のサーバーでパスワードを入力せずに、これらのリポジトリからプルする必要があります。git pull origin master
たとえば、実行したいのですが、パスワードを要求せずにこれを実行したいとします。
~/.ssh/config
ssh-agentを扱うのが好きではなく、ホスト名とユーザー名に応じて使用する秘密鍵を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
のデプロイキーに追加することですが、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でトリックを見つけました。sshクライアントに、各リポジトリが異なるgithub.comサブドメインに存在することを伝えることができます。これらの場合、それらrepo1.github.com
はrepo2.github.com
したがって、最初.git/config
にリポジトリクローンのファイルを編集するので、代わりに次のようになります。
repo1の場合
[remote "origin"]
url = "ssh://git@repo1.github.com/alice/repo1.git"
repo2の場合
[リモート"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つが危険にさらされても、脆弱性は低くなります。