Ein alternativer Ansatz zur das oben von Mark Longair angebotene ist die Verwendung eines Alias, der Folgendes ausführt jede git-Befehl, auf jede remote, mit einem alternativen SSH-Schlüssel. Die Idee ist im Grunde, dass Sie Ihre SSH-Identität wechseln, wenn Sie die Git-Befehle ausführen.
Vorteile gegenüber dem Host-Alias-Ansatz in der anderen Antwort:
- Arbeitet mit jede git-Befehle oder -Aliase, auch wenn Sie nicht die
remote
ausdrücklich.
- Leichteres Arbeiten mit vielen Repositories, da Sie es nur einmal pro Client-Rechner einrichten müssen, nicht einmal pro Repository auf jedem Client-Rechner.
Ich verwende ein paar kleine Skripte und ein Git-Alias admin
. Auf diese Weise kann ich zum Beispiel tun:
git admin push
Um mit dem alternativen ("admin") SSH-Schlüssel einen Push auf die Standard-Fernverbindung durchzuführen. Auch hier können Sie jeden beliebigen Befehl verwenden (nicht nur push
) mit diesem Alias. Sie könnten sogar git admin clone ...
um ein Repository zu klonen, auf das Sie nur mit Ihrem "admin"-Schlüssel Zugriff haben.
Schritt 1: Erstellen Sie die alternativen SSH-Schlüssel und setzen Sie optional eine Passphrase, falls Sie dies auf dem Rechner eines anderen Benutzers tun.
Schritt 2: Erstellen Sie ein Skript namens "ssh-as.sh", das Dinge ausführt, die SSH benutzen, aber einen bestimmten SSH-Schlüssel statt des Standardschlüssels verwenden:
#!/bin/bash
exec ssh ${SSH_KEYFILE+-i "$SSH_KEYFILE"} "$@"
Schritt 3: Erstellen Sie ein Skript namens "git-as.sh", das Git-Befehle unter Verwendung des angegebenen SSH-Schlüssels ausführt.
#!/bin/bash
SSH_KEYFILE=$1 GIT_SSH=${BASH_SOURCE%/*}/ssh-as.sh exec git "${@:2}"
Schritt 4: Fügen Sie einen Alias hinzu (verwenden Sie etwas Passendes für "PATH_TO_SCRIPTS_DIR" unten):
# Run git commands as the SSH identity provided by the keyfile ~/.ssh/admin
git config --global alias.admin \!"PATH_TO_SCRIPTS_DIR/git-as.sh ~/.ssh/admin"
Weitere Einzelheiten unter: http://noamlewis.wordpress.com/2013/01/24/git-admin-an-alias-for-running-git-commands-as-a-privileged-ssh-identity/