上記の Mark Longair によって提供されたものに代わるアプローチは、別の SSH キーを使用して、任意のリモートで任意のgit コマンドを実行するエイリアスを使用することです。アイデアは基本的に、git コマンドを実行するときに SSH ID を切り替えることです。
他の回答のホスト エイリアス アプローチに対する利点:
- 明示的に指定できない場合でも、任意のgit コマンドまたはエイリアスで動作します。
remote
- 各クライアント マシンのリポジトリごとに 1 回ではなく、クライアント マシンごとに 1 回だけセットアップする必要があるため、多くのリポジトリでの作業がより簡単になります。
いくつかの小さなスクリプトと git エイリアスを使用しadmin
ます。そうすれば、たとえば次のことができます。
git admin push
代替 (「admin」) SSH キーを使用してデフォルトのリモートにプッシュするには。繰り返しますがpush
、このエイリアスを使用して任意のコマンド ( だけでなく) を使用できます。git admin clone ...
「admin」キーを使用してのみアクセスできるリポジトリのクローンを作成することもできます。
ステップ 1:代替 SSH キーを作成します。他の人のマシンでこれを行う場合に備えて、必要に応じてパスフレーズを設定します。
ステップ 2: SSH を使用するものを実行する「ssh-as.sh」というスクリプトを作成しますが、デフォルトではなく特定の SSH キーを使用します。
#!/bin/bash
exec ssh ${SSH_KEYFILE+-i "$SSH_KEYFILE"} "$@"
ステップ 3:指定された SSH キーを使用して git コマンドを実行する「git-as.sh」というスクリプトを作成します。
#!/bin/bash
SSH_KEYFILE=$1 GIT_SSH=${BASH_SOURCE%/*}/ssh-as.sh exec git "${@:2}"
ステップ 4:エイリアスを追加します (以下の「PATH_TO_SCRIPTS_DIR」に適したものを使用):
# 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"
詳細: http://noamlewis.wordpress.com/2013/01/24/git-admin-an-alias-for-running-git-commands-as-a-privileged-ssh-identity/