Un approccio alternativo a quello offerto sopra da Mark Longair è l'uso di un alias che eseguirà qualsiasi comando git, su qualsiasi telecomando, con una chiave SSH alternativa. L'idea è fondamentalmente di cambiare l'identità SSH quando si eseguono i comandi git.
Vantaggi relativi all'approccio alias host nell'altra risposta:
- Funzionerà con qualsiasi comando o alias git, anche se non è possibile specificare
remote
esplicitamente.
- Lavorare più facilmente con molti repository perché è necessario configurarlo solo una volta per computer client, non una volta per repository su ciascun computer client.
Uso alcuni piccoli script e un alias git admin
. In questo modo posso fare, ad esempio:
git admin push
Per passare al telecomando predefinito utilizzando la chiave SSH alternativa ("admin"). Ancora una volta, è possibile utilizzare qualsiasi comando (non solo push
) con questo alias. Potresti anche fare git admin clone ...
per clonare un repository a cui avresti accesso solo usando la tua chiave "admin".
Passaggio 1: crea le chiavi SSH alternative, facoltativamente imposta una passphrase nel caso in cui lo stai facendo sulla macchina di qualcun altro.
Passaggio 2: creare uno script chiamato "ssh-as.sh" che esegue elementi che utilizzano SSH, ma utilizza una determinata chiave SSH anziché quella predefinita:
#!/bin/bash
exec ssh ${SSH_KEYFILE+-i "$SSH_KEYFILE"} "$@"
Passaggio 3: creare uno script chiamato "git-as.sh" che esegue i comandi git utilizzando la chiave SSH fornita.
#!/bin/bash
SSH_KEYFILE=$1 GIT_SSH=${BASH_SOURCE%/*}/ssh-as.sh exec git "${@:2}"
Passaggio 4: aggiungi un alias (utilizzando qualcosa di appropriato per "PATH_TO_SCRIPTS_DIR" di seguito):
# 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"
Maggiori dettagli su: http://noamlewis.wordpress.com/2013/01/24/git-admin-an-alias-for-running-git-commands-as-a-privileged-ssh-identity/