Подтвердить что ты не робот

Как работать с несколькими ключами ssh

Пользователи GitHub,

Я новичок в github и имею некоторые проблемы с настройкой git. У меня есть 2 аккаунта с разными пользователями в github, и у меня есть установка git в моей системе 2 раза

Первая папка /. ssh (как обычно) (содержит id_rsa, скопированную в первую очередь учетная запись)
Вторая папка /. ssh/new (содержит id_rsa, которая копируется в вторая учетная запись)

теперь во время нажатия, как я могу переключаться между клавишей ssh?

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

Пожалуйста, сделайте меня правильным, если я понял что-то не так.

Спасибо.

4b9b3361

Ответ 1

(Я проголосовал за то, чтобы закрыть это как возможный дубликат, но я мог бы также добавить похожий ответ).

При использовании транспорта SSH GitHub идентифицирует вас как пользователя на основе ключа SSH, который вы используете для аутентификации. Таким образом, вы должны убедиться, что git использует один SSH-ключ для одного репозитория, а другой для другого.

Я собираюсь предположить, что:

  • У вас есть учетная запись GitHub с именем user1, и вы добавили в эту учетную запись открытый ключ, соответствующий вашему локальному закрытому ключу /home/whoever/.ssh/id_rsa. Скажем, что репозиторий, к которому вы хотите получить доступ как user1, находится user1/whatever в GitHub.
  • У вас есть вторая учетная запись GitHub с именем user2, и вы добавили в эту учетную запись открытый ключ, соответствующий вашему локальному закрытому ключу /home/whoever/.ssh/new/id_rsa. Скажем, что репозиторий, который вам интересен как user2, находится user2/whatever в GitHub.

Самый простой способ справиться с этим - создать новый "remote" (то есть псевдоним для удаленного репозитория) для каждого репозитория, где имя хоста в каждом удаленном URL-адресе фактически является псевдонимом, который вы создали в ~/.ssh/config. (Если этот файл конфигурации не существует, вам придется его создать.)

Например, одна запись в файле ~/.ssh/config может выглядеть так:

Host github-as-user1
  HostName github.com
  User git
  IdentityFile /home/whoever/.ssh/id_rsa

Затем вы можете добавить удаленный вызов gh-user1, скажем, с помощью

git remote add gh-user1 [email protected]:user1/whatever.git

... а затем, если вы хотите нажать ветвь master в репозиторий user1/whatever на GitHub с помощью клавиши ~/.ssh/id_rsa, вы можете просто сделать:

git push gh-user1 master

Чтобы направить другой пользователь (user2) во второй репозиторий, вам нужно добавить второй псевдоним к файлу ~/.ssh/config. Например:

Host gh-as-user2
  HostName github.com
  User git
  IdentityFile /home/whoever/.ssh/new/id_rsa

Затем, чтобы нажать на этот второй репозиторий как на другого пользователя, вы можете просто сделать:

git push gh-user2 master