Keygen - Укажите SSH-ключ для нажатия git для данного домена

keygen - Укажите SSH-ключ для нажатия git для данного домена

Альтернативный подход к предложенному выше Марк Лонгэйм - использовать псевдоним, который будет запускать любую команду git на любом удаленном компьютере с альтернативным ключом SSH. Идея в основном заключается в том, чтобы переключать вашу идентификацию SSH при запуске команд git.

Преимущества относительно подхода псевдонима хоста в другом ответе:

  • Будет работать с любыми командами или псевдонимами git, даже если вы не можете явно указать remote .
  • Легче работать со многими репозиториями, потому что вам нужно настроить его только один раз на клиентский компьютер, а не один раз на репозиторий на каждом клиентском компьютере.

Я использую несколько небольших скриптов и admin псевдонимов git. Таким образом, я могу сделать, например:

Чтобы нажать на удаленный пул по умолчанию, используя альтернативный («admin») SSH-ключ. Опять же, вы можете использовать любую команду (а не просто push ) с этим псевдонимом. Вы даже можете сделать git admin clone . для клонирования репозитория, который будет иметь доступ только к вашему ключу «admin».

Шаг 1. Создайте альтернативные ключи SSH, опционально установите парольную фразу, если вы делаете это на чужой машине.

Шаг 2. Создайте скрипт под названием «ssh-as.sh», который запускает материал, который использует SSH, но использует данный SSH-ключ, а не по умолчанию:

Шаг 3. Создайте скрипт под названием «git-as.sh», который запускает команды git с использованием данного ключа SSH.

Шаг 4: Добавьте псевдоним (используя что-то подходящее для «PATH_TO_SCRIPTS_DIR» ниже):

У меня есть следующий прецедент: я бы хотел нажать git@git.company.com:gitolite-admin используя закрытый ключ пользователя gitolite-admin , в то время как я хочу нажать git@git.company.com:some_repo используя «собственный» закрытый ключ. AFAIK, я не могу решить эту проблему с помощью

/.ssh/config , потому что имя пользователя и имя сервера одинаковы в обоих случаях. Поскольку я в основном использую свой собственный закрытый ключ, у меня это определено в

/.ssh/config для git@git.company.com . Кто-нибудь знает способ переопределить ключ, который используется для одного вызова git ?

(Помимо этого: gitolite отличает, кто делает нажатие на основе ключа, поэтому нет проблем с точки зрения доступа, владения и аудита, что строка user @ server идентична для разных пользователей.)

Возможно, вам придется удалить (или закомментировать) конфигурацию по умолчанию хоста

Вы можете использовать переменную среды git GIT_SSH_COMMAND . Запустите это в своем терминале в вашем репозитории git:

/.ssh/your_private_key на путь секретного ключа ssh, который вы хотите использовать. И вы можете изменить последующую команду git (в примере - git submodule update --init ) другим, например git pull , git fetch и т. Д.

Даже если пользователь и хост одинаковы, их все равно можно различить в

/.ssh/config . Например, если ваша конфигурация выглядит так:

Затем вы просто используете gitolite-as-alice и gitolite-as-bob вместо имени хоста в своем URL-адресе:

Заметка

Вы хотите включить опцию IdentitiesOnly yes чтобы предотвратить использование идентификаторов по умолчанию. В противном случае, если у вас также есть файлы идентификаторов, соответствующие именам по умолчанию, они сначала будут проверены, так как в отличие от других параметров конфигурации (которые соответствуют «первым в выигрышах») параметр IdentityFile добавляется к списку идентификаторов, которые нужно попробовать. См. https://serverfault.com/questions/450796/how-could-i-stop-ssh-offering-a-wrong-key/450807#450807

Он автоматически загружает и использует разные ключи в зависимости от вашего текущего рабочего каталога, параметров ssh и т. Д. . что означает, что вы можете легко иметь каталог work / directory и private /, который прозрачно заканчивается использованием разных ключей и идентификаторов с помощью ssh.

Если вы используете версию ssh ssh для Windows, строка идентификационного файла в конфигурации ssh выглядит так:

Чтобы проверить, в git's bash do

Одна система на основе Unix (Linux, BSD, Mac OS X), идентификатор по умолчанию хранится в каталоге $ HOME / .ssh , в 2 файлах: private key: $HOME/.ssh/id_rsa public key: $HOME/.ssh/id_rsa.pub Когда вы используете ssh без опции -i , он использует закрытый ключ по умолчанию для аутентификации с удаленной системой.

Если у вас есть другой закрытый ключ, который вы хотите использовать, например $ HOME / .ssh / deploy_key , вы должны использовать ssh -i

Это раздражает. Вы можете добавить следующие строки в свой файл $ HOME / .bash_profile : ssh-add

Поэтому каждый раз, когда вы используете ssh или git или scp (в основном ssh тоже), вам больше не нужно использовать параметр -i .

Вы можете добавить столько ключей, сколько хотите в файле $ HOME / .bash_profile .

Я использую Git Bash на Win7. Следующие работали для меня.

Создайте файл конфигурации в

/ .ssh / config или c: / users / [your_user_name] /. Ssh / config. В файле введите:

Я предполагаю, что хост должен быть URL-адресом, а не просто «именем» или ссылкой для вашего хоста. Например,

📎📎📎📎📎📎📎📎📎📎