Несколько учетных записей github на одном компьютере?

Попытка работать с моими фактическими "рабочими" репозиториями и моими личными репозиториями на концентраторе git с моего компьютера.

Сначала была создана рабочая учетная запись, и все работает безупречно.

Моя личная учетная запись, однако, не может, похоже, нажимать на мое личное репо, которое настроено под другой учетной записью/электронной почтой.

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

Как я могу нажать/вытащить из обеих учетных записей из своих соответствующих учетных данных github?

Ответ 1

Все, что вам нужно сделать, это настроить настройки SSH с несколькими парами ключей SSH.

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

Настройка имени пользователя, электронной почты и токена GitHub - переопределение настроек для отдельных репозиториев https://help.github.com/articles/setting-your-commit-email-address-in-git/

Надеюсь это поможет.

Примечание: Некоторые из вас могут требовать, чтобы разные электронные письма использовались для разных репозиториев, из git 2.13 вы можете установить электронную почту на основе каталога, отредактировав глобальный файл конфигурации, находящийся в: ~/.gitconfig используя такие условия, как:

[user]
    name = Pavan Kataria
    email = [email protected]

[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig

И тогда ваша рабочая конфигурация ~/work/.gitconfig будет выглядеть так:

[user]
    email = [email protected]

Спасибо @alexg за то, что сообщили мне об этом в комментариях.

Ответ 2

Использовать HTTPS:

изменить удаленный URL на https:

git remote set-url origin https://[email protected]/USERNAME/PROJECTNAME.git

и вам хорошо идти:

git push

Чтобы убедиться, что коммиты отображаются как выполненные USERNAME, можно настроить user.name и user.email для этого проекта:

git config user.name USERNAME
git config user.email [email protected]

Ответ 3

Вступление в форму

Чтобы управлять репо с git в отдельной учетной записи github/bitbucket/whatever, вам просто нужно создать новый ключ SSH.

Но прежде чем мы сможем начать толкать/вытаскивать репозитории с вашей второй идентичностью, мы должны ввести вас в форму. Пусть предполагается, что ваша система настроена с типичной парой ключей id_rsa и id_rsa.pub. Прямо сейчас ваш tree ~/.ssh выглядит следующим образом

$ tree ~/.ssh
/Users/you/.ssh
├── known_hosts
├── id_rsa
└── id_rsa.pub

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

# change to your ~/.ssh directory
$ cd ~/.ssh

# rename the private key
$ mv id_rsa github-mainuser

# rename the public key
$ mv id_rsa.pub github-mainuser.pub

Затем сгенерирует новую пару ключей - здесь я назову новый ключ github-otheruser

$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/github-otheruser

Теперь, когда мы смотрим на tree ~/.ssh, мы видим

$ tree ~/.ssh
/Users/you/.ssh
├── known_hosts
├── github-mainuser
├── github-mainuser.pub
├── github-otheruser
└── github-otheruser.pub

Затем нам нужно настроить файл ~/.ssh/config, который будет определять наши конфигурации ключей. Мы создадим его с помощью правильных разрешений на чтение и запись.

$ (umask 077; touch ~/.ssh/config)

Откройте это в своем любимом редакторе и добавьте следующее содержимое

Host github.com
  User git
  IdentityFile ~/.ssh/github-mainuser

Host github.com-otheruser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-otheruser

Предположительно, у вас будет несколько существующих репозиториев, связанных с вашим основным идентификатором github. По этой причине "default" github.com Host настроен на использование вашего ключа mainuser. Если вы не хотите поддерживать одну учетную запись по другой, я покажу вам, как обновлять существующие репозитории в вашей системе, чтобы использовать обновленную конфигурацию ssh.


Добавьте новый ключ SSH в github

Перейдите к github.com/settings/keys, чтобы добавить новый общедоступный ключ

Вы можете получить содержимое открытого ключа, используя: скопируйте/вставьте его в github

$ cat ~/.ssh/github-otheruser.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBVvWNQ2nO5...

Теперь ваш новый идентификатор пользователя настроен - ниже мы покажем вам, как его использовать.


Получение проделанной работы: клонирование репо

Итак, как это объединяется для работы с git и github? Хорошо, потому что у вас нет курицы без яйца, мы рассмотрим клонирование существующего репо. Эта ситуация может относиться к вам, если у вас есть новая учетная запись github для вашего рабочего места, и вы были добавлены в проект компании.

Скажем, github.com/someorg/somerepo уже существует, и вы добавили к нему - клонирование так же просто, как

$ git clone github.com-otheruser:someorg/somerepo.git

Эта часть полужирный должна соответствовать имени Host, которое мы установили в вашем файле ~/.ssh/config. Это правильно соединяет git с соответствующим IdentityFile и правильно аутентифицирует вас с помощью github


Получение проделанной работы: создание нового репо

Хорошо, потому что у вас нет курицы без яйца, мы рассмотрим публикацию нового репо на вашем вторичном аккаунте. Эта ситуация применяется к пользователям, которые создают новый контент, используя свою вторичную учетную запись github.

Предположим, вы уже сделали небольшую работу локально, и теперь вы готовы нажать на github. Вы можете следить за мной, если хотите

$ cd ~
$ mkdir somerepo
$ cd somerepo
$ git init

Теперь настройте это репо, чтобы использовать identity

$ git config user.name "Mister Manager"
$ git config user.email "[email protected]"

Теперь сделайте свою первую фиксацию

$ echo "hello world" > readme
$ git add .
$ git commit -m "first commit"

Проверьте фиксацию, чтобы увидеть, что ваша новая идентификация была использована с помощью git log

$ git log --pretty="%H %an <%ae>"
f397a7cfbf55d44ffdf87aa24974f0a5001e1921 Mister Manager <[email protected]>

Хорошо, пора нажать на github! Поскольку github еще не знает о нашем новом репо, сначала перейдите в github.com/new и создайте свое новое репо - имя somerepo

Теперь, чтобы настроить ваше репо, чтобы "поговорить" с github, используя правильные идентификационные данные/учетные данные, добавим пульт. Предполагая, что ваше имя пользователя github для вашей новой учетной записи: someuser...

$ git remote add origin github.com-otheruser:someuser/somerepo.git

Эта область полужирный абсолютно критическая и должна соответствовать Host, которую мы определили в вашем файле ~/.ssh/config

Наконец, нажмите repo

$ git push origin master

Обновить существующее репо, чтобы использовать новую конфигурацию SSH

Предположим, что у вас уже клонировано репо, но теперь вы хотите использовать новую конфигурацию SSH. В приведенном выше примере мы сохранили ваши существующие репозитории в такте, назначив предыдущую пару id_rsa/id_rsa.pub для Host github.com в вашем конфигурационном файле SSH. В этом нет ничего плохого, но сейчас у меня есть как минимум 5 конфигураций github, и мне не нравится думать о том, что один из них является "конфигурацией по умолчанию". Я бы предпочел быть явным в каждом из них.

Прежде чем мы это сделали,

Host github.com
  User git
  IdentityFile ~/.ssh/github-mainuser

Host github.com-otheruser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-otheruser

Итак, мы теперь обновим это до этого (изменения в жирный)

Host github.com-mainuser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-mainuser

Host github.com-otheruser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-otheruser

Но это означает, что теперь любое существующее репо с удаленным github.com больше не будет работать с этим файлом идентификации. Но не беспокойтесь, это простое решение.

Чтобы обновить любое существующее репо, чтобы использовать новую конфигурацию SSH, просто откройте файл конфигурации repo git и обновите URL-адрес!

$ cd existingrepo
$ nano .git/config

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

[remote "origin"]
        url = github.com-mainuser:someuser/existingrepo.git
        fetch = +refs/heads/*:refs/remotes/origin/*

Что это. Теперь вы можете push/pull к вашему сердечному содержимому


Разрешения на доступ к файлам SSH

Если вы столкнулись с проблемами, когда ваши открытые ключи работают некорректно, SSH достаточно строг в разрешении на вашем ~/.ssh и соответствующие файлы ключей

Как правило, любые каталоги должны быть 700, а любые файлы должны быть 600 - это означает, что они являются владельцем-читаемым/только для записи - никакая другая группа/пользователь не может читать/писать

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/config
$ chmod 600 ~/.ssh/github-mainuser
$ chmod 600 ~/.ssh/github-mainuser.pub
$ chmod 600 ~/.ssh/github-otheruser
$ chmod 600 ~/.ssh/github-otheruser.pub

Как управлять моими ключами SSH

Я управляю отдельными ключами SSH для каждого хоста, к которому я подключаюсь, так что, если какой-либо один ключ когда-либо был скомпрометирован, мне не нужно обновлять ключи на каждом другом месте, где я использовал этот ключ. Это похоже на то, что когда вы получаете это уведомление от Adobe, что было украдено 150 миллионов информации о своих пользователях, теперь вам нужно отменить эту кредитную карту и обновить каждую услугу, которая зависит от нее, - какая неприятность.

Вот как выглядит мой каталог ~/.ssh: у меня есть один ключ .pem для каждого пользователя в папке для каждого домена, к которому я подключаюсь. Я использую клавиши .pem, поэтому мне нужен только один файл на ключ.

$ tree ~/.ssh
/Users/naomik/.ssh
├── config
├── github.com
│   ├── naomik.pem
│   ├── someusername.pem
├── known_hosts
├── naomi.makes.software
│   ├── naomi.pem
├── somedomain.com
│   ├── someuser.pem
└── someotherdomain.org
    └── someuser.pem

И вот мой соответствующий файл /.ssh/config - очевидно, что материал github имеет отношение к ответу на этот вопрос о github, но этот ответ призван предоставить вам знания для управления вашими идентификаторами ssh на любом количестве сервисов/машин.

Host github.com-naomik
  HostName github.com
  User git
  IdentityFile ~/.ssh/github.com/naomik.pem

Host github.com-someuser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github.com/someusername.pem

Host naomi.makes.software
  User naomi
  IdentityFile ~/.ssh/naomi.makes.software/naomi.pem

Host somedomain.com
  HostName 162.10.20.30
  User someuser
  IdentityFile ~/.ssh/somedomain.com/someuser.pem

Host someotherdomain.org
  User someuser
  IdentityFile ~/.ssh/someotherdomain.org/someuser.pem

Получение открытого ключа SSH с помощью клавиши PEM

Вы заметили, что у меня есть только один файл для каждого ключа. Когда мне нужно предоставить открытый ключ, я просто создаю его по мере необходимости.

Итак, когда github запрашивает ваш открытый ключ ssh, запустите эту команду, чтобы вывести открытый ключ в stdout - скопируйте/вставьте туда, где нужно

$ ssh-keygen -y -f someuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAA...

Обратите внимание, что это также тот же процесс, который я использую для добавления моего ключа на любую удаленную машину. Значение ssh-rsa AAAA... копируется в удаленный файл ~/.ssh/authorized_keys


Преобразование пар ключей id_rsa/id_rsa.pub в формат PEM

Итак, вы хотите приручить ключевые файлы и срубить какую-нибудь файловую систему? Преобразование пары ключей в один PEM легко

$ cd ~/.ssh
$ openssl rsa -in id_rsa -outform pem > id_rsa.pem

Или, следуя приведенным выше примерам, мы переименовали id_rsa -> github-mainuser и id_rsa.pub -> github-mainuser.pub - so

$ cd ~/.ssh
$ openssl rsa -in github-mainuser -outform pem > github-mainuser.pem

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

# display the public key
$ cat github-mainuser.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA ... R++Nu+wDj7tCQ==

# generate public key from your new PEM
$ ssh-keygen -y -f someuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA ... R++Nu+wDj7tCQ==

Теперь, когда у вас есть ваш файл github-mainuser.pem, вы можете безопасно удалить старые файлы github-mainuser и github-mainuser.pub - необходим только файл PEM; просто генерируйте открытый ключ, когда вам это нужно ^ _ ^


Создание ключей PEM с нуля

Вам не нужно создавать пару private/public key, а затем конвертировать в один ключ PEM. Вы можете напрямую создать PEM-ключ.

Создайте newuser.pem

$ openssl genrsa -out ~/.ssh/newuser.pem 4096

Получение открытого ключа SSH является тем же самым

$ ssh-keygen -y -f ~/.ssh/newuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACA ... FUNZvoKPRQ==

Ответ 4

Создавая разные псевдонимы хостов для github.com в ~/.ssh/config, и давая каждому хосту псевдоним свой собственный ключ ssh, вы можете легко использовать несколько github без путаницы. То потому что github.com отличает не от пользователя, который всегда просто git, но с помощью ключа ssh, который вы использовали для подключения. Просто настройте свое отдаленное происхождение, используя собственные псевдонимы хоста.

В приведенном выше резюме учтено комментарии к сообщению в блоге ниже.

Я нашел это объяснение самым ясным. И это работает для меня, по крайней мере, с апреля 2012 года.

http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/

Ответ 5

Детали на http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/, связанные с mishaba, очень хорошо работают для меня.

С этой страницы:

$ touch ~/.ssh/config

Затем отредактируйте этот файл как нечто подобное (одна запись для каждой учетной записи):

#Default GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

Host github-COMPANY
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_COMPANY

Ответ 6

Я использую shell-скрипты, чтобы переключить меня на любую учетную запись, которую я хочу быть "активным". По сути, вы начинаете с нового старта, настраиваете и настраиваете одну учетную запись, а затем переместите эти файлы на имя с соответствующим префиксом. С этого момента вы можете использовать команду "github" или "gitxyz" для переключения:

# my github script
cd ~/.ssh

if [ -f git_dhoerl -a -f git_dhoerl.pub -a -f config_dhoerl ]
then
    ; 
else 
    echo "Error: missing new files"
    exit 1
fi 

# Save a copy in /tmp, just in case
cp id_rsa /tmp
cp id_rsa.pub /tmp
cp config /tmp
echo "Saved old files in /tmp, just in case"

rm id_rsa
rm id_rsa.pub
rm config
echo "Removed current links/files"

ln git_dhoerl id_rsa
ln git_dhoerl.pub id_rsa.pub
ln config_dhoerl config

git config --global user.email "[email protected]<company>.com"
git config --global github.user "dhoerl"        
git config --global github.token "whatever_it_is"

ssh-add -D

Мне повезло с этим. Я также создал прогон script в Xcode (для вас, пользователей Mac), поэтому он не будет строить мой проект, если у меня не будет надлежащей настройки (с его использованием git):

Запустите script, расположенный после зависимостей (используя/bin/ksh в качестве оболочки):

if [ "$(git config --global --get user.email)" != "[email protected]<company>.com" ]
then
    exit 1
fi

EDIT: добавлены тесты для существования новых файлов и копирования старых файлов в /tmp для отправки комментариев по @naomik ниже.

Ответ 7

  • Перейдите к ~/.ssh
  • Создайте файл с именем config (без расширения)
  • Откройте файл конфигурации и добавьте ниже коды. (изменение в соответствии с вашей учетной записью)

    1. Счет 1

      # account_1
      Host gitlab.com-account_1
      HostName gitlab.com
      User git
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_account_1
      
    2. Счет 2

      # Account2
      Host gitlab.com-Account2
      HostName gitlab.com
      User git
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_Account2
      
    3. Счет 3

      # Account_3
      Host github.com-Account3
      HostName github.com
      User git
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_Account_3
      
  • Добавьте удаленный URL-адрес следующим образом

    1. Счет 1

      git remote add origin [email protected]_1:group_name/repo_name.git
      
    2. Счет 2

      git remote add origin [email protected]:group_name/repo_name.git
      
    3. Счет 3

      git remote add origin github.com-Account3:github_username/repo_name.git
      

Убедитесь, что имена IdentityFile совпадают с именами, созданными во время генерации ключа ssh.

Ответ 8

Этот ответ для начинающих (не-git гуру). У меня недавно была эта проблема, и, возможно, ее только я, но большинство ответов, казалось, требовали довольно быстрого понимания git. После прочтения нескольких ответов, включая этот поток, вот шаги, которые мне нужно предпринять, чтобы легко переключаться между учетными записями GitHub (например, взять две учетные записи GitHub, github.com/personal и gitHub.com/work):

  1. Проверьте существующие ключи ssh: откройте терминал и запустите эту команду, чтобы просмотреть/перечислить существующие ключи ssh ls -al ~/.ssh
    файлы с расширением .pub - ваши ssh-ключи, поэтому у вас должно быть два для personal и work учетных записей. Если есть только один или никто, его время генерировать другие мудрые пропустить это.

    - Генерация ключа ssh: войдите в github (либо личный, либо работайте соответственно), перейдите в Настройки и скопируйте связанное электронное письмо.
    теперь вернитесь в терминал и запустите ssh-keygen -t rsa -C "the copied email", вы увидите:

    Создание пары ключей public/private rsa.
    Введите файл для сохранения ключа (/.../.ssh/id_rsa):

    id_rsa - это имя по умолчанию для скорого сгенерированного ключа ssh, чтобы скопировать путь и переименовать значение по умолчанию, например /.../.ssh/id_rsa_work если вы /.../.ssh/id_rsa_work для работы учетную запись. введите пароль или просто введите, чтобы игнорировать, и вы будете читать что-то вроде ключевого изображения случайного изображения: и изображение. сделанный.
    Повторите этот шаг еще раз для своей второй учетной записи github. Убедитесь, что вы используете правильный адрес электронной почты и другое имя ключа ssh (например, id_rsa_personal), чтобы избежать перезаписи.
    На этом этапе вы должны увидеть две клавиши ssh при ls -al ~/.ssh запуске ls -al ~/.ssh.
  2. Связать ключ ssh с учетной записью gitHub. Следующим шагом является копирование одного из ключей ssh, запуск этого, но замена вашего собственного имени ssh: pbcopy < ~/.ssh/id_rsa_work.pub, заменить id_rsa_work.pub на то, что вы назвали.
    Теперь, когда наш ключ ssh скопирован в буфер обмена, вернитесь к учетной записи github. [Убедитесь, что вы вошли в рабочую учетную запись, если id_rsa_work ключ ssh - id_rsa_work ] и перейдите к
    Настройки - SSH и GPG Keys и нажмите кнопку New SSH (не новый ключ GPG: D)
    дать название для этого ключа, вставить ключ и нажать "Добавить ключ SSH". Теперь вы либо успешно добавили ключ ssh, либо заметили, что он был там, где все хорошо (или вы получили сообщение об ошибке, потому что вместо нового ключа SSH выбрали новый ключ GPG: D).
  3. Связать ключ ssh с учетной записью gitHub: повторите вышеуказанный шаг для своей второй учетной записи.
  4. Отредактируйте глобальную конфигурацию git: последний шаг - убедиться, что глобальный файл конфигурации знает все учетные записи github (так сказать).
    Запустите git config --global --edit для редактирования этого глобального файла, если это откроет vim и вы не знаете, как его использовать, нажмите i чтобы войти в режим вставки, отредактируйте файл, как показано ниже, и нажмите esc, а затем :wq для выхода из режима вставки:

    [inside this square brackets give a name to the followed acc.] name = github_username email = github_emailaddress [any other name] name = github_username email = github_email [credential] helper = osxkeychain useHttpPath = true

Done !, теперь, когда вы пытаетесь нажать или вытащить из репо, вам будет задан вопрос о том, какая учетная запись GitHub должна быть привязана к этому репо, и ее просят только один раз, локальная конфигурация будет помнить эту ссылку, а не глобальную конфигурацию, чтобы вы могли работать на разных репозиториях, связанных с разными учетными записями, без необходимости редактировать глобальную конфигурацию каждый раз.

Ответ 9

Спасибо user1107028:

Использовать HTTPS:

изменить удаленный URL на https:

git удаленное задание URL-адреса источника https://[email protected]/USERNAME/PROJECTNAME.git, и вы хороши идти:

git нажмите

Я нашел это лучшим способом при использовании нескольких учетных записей github. Я не могу использовать только одну учетную запись, ее просто невозможно, и я не мог заставить SSH вести себя независимо от того, что я сделал. Id проголосовали за ответ, но у меня нет достаточного количества баллов - я хотел признать это простое решение для таких, как я, нуждающихся в чистом простом решении. Он работал в первый раз и сэкономил мне больше времени.

Ответ 10

Проще и легко исправить, чтобы избежать путаницы.

Для пользователей Windows использовать несколько или разных учетных записей git для разных проектов.

Выполните следующие действия: перейдите на панель управления и найдите диспетчер учетных данных. Затем перейдите в Диспетчер учетных данных → Учетные данные Windows

Теперь удалите git: https// узел github.com в разделе "Общие учетные данные"

Это приведет к удалению текущих учетных данных. Теперь вы можете добавить любой проект через git pull, он попросит имя пользователя и пароль.

Когда вы сталкиваетесь с какой-либо проблемой с другим аккаунтом, выполняете тот же процесс.

Спасибо

ссылаться на изображение

Ответ 11

Я нашел этот камень очень полезным: sshwitch

https://github.com/agush22/sshwitch
http://rubygems.org/gems/sshwitch

Он помогает переключать ключи ssh. Не забудьте сделать все сначала!

Кроме того, чтобы убедиться, что у коммит есть правильный адрес электронной почты, связанный с ними, я убедился, что файл ~/.gitconfig имеет правильный адрес электронной почты.

Ответ 12

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

#this store the password permanently
$ git config --global credential.helper wincred

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

Ответ 13

только что понял это для Windows, используя учетные данные для каждого репо:

cd c:\User1\SomeRepo
git config --local credential.https://github.com.user1 user1
git config --local credential.useHttpPath true
git config --local credential.helper manager
git remote set-url origin https://[email protected]/USERNAME/PROJECTNAME.git

Формат учетных данных.https://github.com. сообщает помощнику по учетным данным URL-адрес для учетных данных. 'UseHttpPath' указывает менеджеру учетных данных использовать путь для учетных данных. Если useHttpPath опущено, диспетчер учетных данных сохранит одно учетное имя для https://github.com. Если он включен, диспетчер учетных данных будет хранить несколько учетных данных, что я и хотел.

Ответ 14

Самый простой и понятный подход (ИМХО) - никаких конфигурационных файлов не слишком хлопотно

Просто создайте другой ключ ssh.

Допустим, у вас есть новая рабочая учетная запись GitHub, просто создайте для нее новый ключ:

sh-keygen -t rsa -C "[email protected]_mail.com" -f "id_rsa_work_user1"'

Теперь у вас должны быть старые и новые, чтобы увидеть их, запустите:

ls -al ~/.ssh

Вы должны запустить вышеуказанное только один раз.

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

ssh-add -D
ssh-add ~/.ssh/id_rsa_work_user1 #make to use this without the suffix .pub

Чтобы переключиться на старый, запустите снова:

 ssh-add -D
 ssh-add ~/.ssh/<previous id_rsa>

Ответ 15

Вам не нужно поддерживать две разные учетные записи для личной работы и работы. Фактически, Github рекомендует вам поддерживать единую учетную запись и помогает вам объединить оба.

Следуйте приведенной ниже ссылке, чтобы объединиться, если вы решите, что нет необходимости поддерживать несколько учетных записей.

https://help.github.com/articles/merging-multiple-user-accounts/

Ответ 16

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

Вам просто нужно:

1) создать SSH общедоступную и закрытую пару ключей для каждой вашей учетной записи в ~/.ssh месте с разными именами и

2) добавьте сгенерированные открытые ключи в соответствующую учетную запись в разделе " Settings >> SSH and GPG keys >> New SSH Key.

Для генерации общих и частных ключей SSH используйте следующую команду:

cd ~/.ssh
ssh-keygen -t rsa -C "[email protected]" -f "id_rsa_WORK"
ssh-keygen -t rsa -C "[email protected]" -f "id_rsa_PERSONAL"

В результате вышеперечисленных команд id_rsa_WORK id_rsa_WORK.pub файлы id_rsa_WORK и id_rsa_WORK.pub для вашей рабочей учетной записи (ex-git.work.com), а id_rsa_PERSONAL и id_rsa_PERSONAL.pub будут созданы для вашей личной учетной записи (ex-github.com).

После создания скопируйте содержимое из каждого публичного (*.pub) файла и сделайте шаг 2 для каждой учетной записи.

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

Ответ 17

Еще один простой способ - использовать несколько настольных приложений, например, что я делаю, используя учетную запись A на рабочем столе Github, используя учетную запись B на Github Kraken

Ответ 18

Если у вас установлен WSL, вы можете иметь две отдельные учетные записи git - одну в WSL и одну в Windows.

Ответ 20

Вы должны и не должны подталкивать к проекту с некоторыми общими учетными данными. После запуска на новом компьютере выполните следующие шаги для правильной настройки и использования учетных данных gitlab:

  • создать публичные/закрытые ssh-ключи на компьютере
  • скопируйте и вставьте открытый ключ в интерфейс gitlab/github ui (любой, кто намекает на инструкции по линии cmd, получает бесплатное пиво...)
  • убедитесь, что вы клонировали репозиторий с помощью git, а не http url
  • установить псевдоним git, чтобы избежать постоянного ввода того же префикса в команду git
  • во время git commit ВСЕГДА используйте флаги автора и электронной почты
  • используйте git как обычно, вы бы это сделали

Все это так:

 # create the public / private key credentials on that specific machine
 ssh-keygen -t rsa -b 4096 -C "<<you>>@org.net" -f ~/.ssh/id_rsa.<<you>>.'hostname -s'

 # setup your public key in the gitlab ui 
 cat ~/.ssh/id_rsa.<<you>>.'hostname -s'

 # make sure you clone the repo via the git and not http url
 git clone [email protected]:org/some-repo.git

 # set the git alias to avoid constant typing of the repeating prefix to the git cmd
 alias git='GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.<<you>>.'hostname -s'" git'

 # during git commit ALWAYS use the author and e-mail flags
 git add --all ; git commit -nm "$git_msg" --author "YourFirstName YourLastName <[email protected]>"

 # use git as normal
 git fetch --all; git pull --all