Альтернативный подход к , предложенному выше Марком Лонгэйром , заключается в использовании псевдонима, который будет запускать команду any git, на any remote сальтернативный ключ SSH.Основная идея заключается в том, чтобы переключать вашу SSH-идентичность при выполнении команд git.
Преимущества относительно подхода псевдонима хоста в другом ответе:
- Будет работать с any команды или псевдонимы git, даже если вы не можете указать
remote
явно. - Проще работать со многими репозиториями, потому что вам нужно настроить его только один раз для каждого клиентского компьютера, а не для каждого репозитория вкаждый клиентский компьютер.
Я использую несколько небольших скриптов и псевдоним git admin
.Таким образом, я могу сделать, например:
git admin push
Нажать на удаленный по умолчанию пульт с помощью альтернативного («admin») ключа SSH.Опять же, вы можете использовать любую команду (не только push
) с этим псевдонимом.Вы даже можете сделать git admin clone ...
, чтобы клонировать репозиторий, доступ к которому у вас будет только при использовании вашего ключа администратора.
Шаг 1: Создайте альтернативные ключи SSH, при желании установите фразу-парольв случае, если вы делаете это на чужой машине.
Шаг 2: Создайте скрипт с именем «ssh-as.sh», который запускает материал, который использует SSH, но использует данный SSHключ, а не по умолчанию:
#!/bin/bash
exec ssh ${SSH_KEYFILE+-i "$SSH_KEYFILE"} "$@"
Шаг 3: Создайте скрипт с именем «git-as.sh», который запускает команды git с использованием данного ключа SSH.
#!/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/