さまざまなシステム用に複数のssh構成フォルダーがあります。例:
ssh -F ~/.ssh/system-a/config user@system-a
ssh -F ~/.ssh/system-b/config user@system-b
各フォルダには、設定ファイルとそのようなIDファイルのセットがあります
Host system-a
HostName <some_hostname>
User <some_username>
IdentityFile ~/.ssh/system-a/keys/system-a.pem
Gitタスクを実行するときに特定のssh設定ファイルまたは特定のsshキーを使用するようにgitに指示するにはどうすればよいですか?
できれば、gitプロジェクトごとにこれを実行したいのが理想的です。
コマンドラインで、現在のリポジトリのGit構成を変更できます。
git config core.sshCommand "ssh -F ~/.ssh/system-a/config"
または、ローカルリポジトリの.git/config
の[core]
セクションに移動します。
sshCommand = "ssh -F ~/.ssh/system-a/config"
これは、git2.10以降でのみ機能します。それ以外の場合は、環境変数$GIT_SSH_COMMAND
を使用して設定する必要があります(例:
GIT_SSH_COMMAND="ssh -F ~/.ssh/system-a/config" git pull
Andrejs CainikovsとJakujeが指摘しているように、最近の十分なgit
で複数のssh-configファイルを使用することが可能です。
ただし、複数の構成を持つ単一のssh-configファイルで実質的に同じ結果を達成できます。おそらく、すべてが単一の実際のホストを参照します。
Host SOMELABEL
HostName <some_hostname>
User <some_username>
IdentityFile ~/.ssh/system-a/keys/system-a.pem
Host OTHERLABEL
HostName <other_hostname>
User <other_username>
IdentityFile ~/.ssh/system-b/keys/system-a.pem
次に、次のようにリポジトリのクローンを作成します。
git clone SOMELABEL:foo/bar.git
git clone OTHERLABEL:frobnozzel.git
これは、bar
リポジトリの<some_username>@<some_hostname>
のssh-keyで~/.ssh/system-a/keys/system-a.pem
を使用しますが、ssh-keyでは<other_username>@<other_hostname>
を使用しますfrobnozzel
リポジトリの~/.ssh/system-b/keys/system-a.pem
内。