Как использовать другой закрытый SSH-ключ для команд оболочки Git – CloudSavvy IT
Использование ключей SSH более безопасно, чем пароли, и это также относится к Git. Однако, в отличие от пароля, изменить ключ SSH или управлять несколькими ключами сложнее. Однако, отредактировав конфигурацию SSH, вы можете подключиться к нескольким репозиториям Git с разными ключами.
Как SSH работает с Git?
Git не просто использует ваш закрытый ключ для аутентификации, когда вы используете SSH вместо HTTPS – он фактически устанавливает настоящее SSH-соединение с удаленным сервером. Он делает это незаметно, поэтому вы можете не знать о выполняемых им командах, но он использует ssh под капотом.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
Поскольку он использует вашу команду ssh по умолчанию, он будет действовать так, как будто вы только что запустили его самостоятельно, и будет использовать ключ по умолчанию в ~ / .ssh / id_rsa. Вероятно, это не то, что вам нужно, если вы здесь читаете это, поэтому, чтобы изменить это, вам нужно отредактировать конфигурацию SSH, а не Git.
Создание нового ключа SSH
Для этого вам в первую очередь понадобится один, а сделать это довольно просто. Просто запустите ssh-keygen и укажите новое имя ключа с помощью флага -f. Это создаст закрытый ключ и открытый ключ с расширением .pub.
ssh-keygen -t rsa -f ~ / .ssh / github
Редактирование ~ / .ssh / config
Файл конфигурации SSH позволяет установить «Хосты», которые будут соответствовать тому, к чему вы подключаетесь, и разрешить изменение файла, который использует ssh.
Хост github Имя хоста github.com IdentityFile ~ / .ssh / id_rsa.github IdentitiesOnly yes
Это позволит вам использовать SSH-ключ, отличный от вашего основного, для всех запросов, поступающих на github.com, но что, если вы хотите использовать два разных ключа для отдельных репозиториев Git? Например, один для вашей рабочей учетной записи, а другой для вашей личной учетной записи.
Что ж, вам нужно определить две конфигурации с разными именами, используя один и тот же хост:
Персональное имя хоста github.com IdentityFile ~ / .ssh / githubpersonal IdentitiesOnly yes Работа хоста Имя хоста github.com IdentityFile ~ / .ssh / githubwork IdentitiesOnly yes
Обычно это приводит к противоречивой конфигурации, но Git предоставляет способ обойти это. Если у вас есть удаленный репозиторий, такой как Github, связанный с вашим локальным репозиторием, удалите его:
git удаленное удаление источника
Затем вместо добавления github.com в качестве удаленного замените его именем хоста в файле конфигурации SSH. Git распознает это и использует этот SSH-хост для подключения. Вы можете установить отдельные хосты для каждого репозитория.
git удаленное добавление источника git @ personal: имя пользователя / repository.git
Переопределение вручную
Если вы не хотите связываться с конфигурацией SSH или просто хотите временно отменить ее, Git также предоставляет переменную среды GIT_SSH_COMMAND. Вы можете
GIT_SSH_COMMAND = ‘ssh -i ~ / .ssh / github -o UserKnownHostsFile = / dev / null -o StrictHostKeyChecking = no’
Любые команды Git, которые вы запускаете впоследствии в том же сеансе оболочки, будут использовать эту команду SSH вместо команды по умолчанию. Вы также можете установить совершенно другой двоичный файл SSH с помощью GIT_SSH.
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)