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



git switch to tag (1)

На этот вопрос уже есть ответ:

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

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

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

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

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

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

Благодарю.


Answer #1

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

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

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

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

Самый простой способ справиться с этим - создать новый «удаленный» (т. Е. Псевдоним для удаленного репозитория) для каждого репозитория, где имя хоста в 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




ssh-keys