Une approche alternative à celle proposée ci-dessus par Mark Longair est d'utiliser un alias qui va exécuter toute commande git, sur toute distance, avec une autre clé SSH. L'idée est fondamentalement changer votre SSH identité lors de l'exécution des commandes git.
Avantages par rapport à l'alias d'hôte approche dans l'autre réponse:
- Va travailler avec toutes les commandes git ou alias, même si vous ne pouvez pas spécifier l'
remote
explicitement.
- Plus facile de travailler avec beaucoup de dépôts, car vous avez seulement besoin de configurer une seule fois par client de la machine, pas une fois par dépôt sur chaque ordinateur client.
J'utilise quelques petits scripts et un git alias admin
. De cette façon, je peux le faire, par exemple:
git admin push
Pour le pousser à distance par défaut à l'aide de l'alternative ("admin") clé SSH. De nouveau, vous peut utiliser n'importe quelle commande (et pas seulement push
) avec cet alias. Vous pourriez même faire git admin clone ...
de cloner un dépôt que vous n'avez accès qu'à l'aide de votre "admin".
Étape 1: Créer l'alternative des clés SSH, le cas échéant, définir un mot de passe dans le cas où vous êtes en train de faire cela sur quelqu'un d'autre de la machine.
Étape 2: Créer un script appelé "ssh-as.sh" qui exécute des trucs qui utilise le protocole SSH, mais utilise une clé SSH plutôt que celui par défaut:
#!/bin/bash
set -e
set -u
ssh -i $SSH_KEYFILE $@
Étape 3: Créer un script appelé "git-as.sh" qui exécute les commandes git à l'aide de la clé SSH.
#!/bin/bash
set -e
set -u
SSH_KEYFILE_NAME=$1
SCRIPTS_DIR=$(dirname $0)
shift
SSH_KEYFILE=$SSH_KEYFILE_NAME GIT_SSH=$SCRIPTS_DIR/ssh-as.sh git $@
Étape 4: Ajouter un alias (à l'aide de quelque chose de convenable "PATH_TO_SCRIPTS_DIR" ci-dessous):
# 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"
Plus de détails au: http://noamlewis.wordpress.com/2013/01/24/git-admin-an-alias-for-running-git-commands-as-a-privileged-ssh-identity/