alice
2つ以上のプライベートリポジトリを持つgithub.comユーザーであるとしましょうrepoN
。この例では、名前が付けられた2つのリポジトリrepo1
と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
レポクローンのファイルを編集するので、代わりに次のようになります。
repo1の場合
[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つのキーを生成し、リポジトリを作成することをお勧めします。処理するキーははるかに多くなりますが、キーが侵害された場合の脆弱性は低くなります。