web-dev-qa-db-ja.com

使用するSSH構成ファイルをgitに指示します

さまざまなシステム用に複数の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プロジェクトごとにこれを実行したいのが理想的です。

10
pfwd

コマンドラインで、現在のリポジトリの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
11
Jakuje

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内。

2
umläute

git 2.10 +

チェック ジャクジェの答え

git 2.9-

使用する core.gitproxy魔法を実行するカスタムスクリプトを指しています。

1