1. ホーム
  2. git

[解決済み] git push で指定したドメインの SSH 鍵を指定する。

2022-03-21 14:20:50

質問

次のようなユースケースがあります。にプッシュできるようにしたい。 [email protected]:gitolite-admin の秘密鍵を使って gitolite-admin にプッシュしたいが [email protected]:some_repo を「自分の」秘密鍵で使用しています。AFAIKでは、この問題を解決するには ~/.ssh/config ユーザー名とサーバー名が同じであるためです。私はほとんど自分の秘密鍵を使用しているので、その秘密鍵は ~/.ssh/config に対して [email protected] . のキーを上書きする方法をご存知の方はいらっしゃいますか? git を呼び出すことができますか?

(余談: gitoliteはキーを元に誰がプッシュしているかを区別しているので、user@serverの文字列が異なるユーザーで同一であっても、アクセス、所有、監査の観点からは問題ありません)。

解決方法は?

ユーザーとホストが同じでも、区別するために ~/.ssh/config . 例えば、以下のような構成であれば。

Host gitolite-as-alice
  HostName git.company.com
  User git
  IdentityFile /home/whoever/.ssh/id_rsa.alice
  IdentitiesOnly yes

Host gitolite-as-bob
  HostName git.company.com
  User git
  IdentityFile /home/whoever/.ssh/id_dsa.bob
  IdentitiesOnly yes

そうすると、単に gitolite-as-alicegitolite-as-bob の代わりに、URLのホスト名を指定します。

git remote add alice git@gitolite-as-alice:whatever.git
git remote add bob git@gitolite-as-bob:whatever.git

備考

というオプションを含めたい。 IdentitiesOnly yes を使用して、デフォルトの ID が使用されないようにします。そうしないと、もしデフォルトの名前にマッチする id ファイルがあった場合、そちらが最初に試されることになります。 IdentityFile オプション を追加します。 を、試すべき ID のリストに追加します。参照してください。 https://serverfault.com/questions/450796/how-could-i-stop-ssh-offering-a-wrong-key/450807#450807