Попытка работать с моими реальными репозиториями "work" и моими личными репозиториями на git hub с моего компьютера.
Рабочий аккаунт был настроен первым, и все работает без нареканий.
Моя личная учетная запись, однако, не может подтолкнуть к моему личному репо, настроенному под другой учетной записью / адресом электронной почты.
Я попытался скопировать рабочий ключ в личный кабинет, но это приводит к ошибке, потому что ключ может быть прикреплен только к одному аккаунту.
Как я могу выдвигать / извлекать данные из обеих учетных записей, используя соответствующие учетные данные github?
git
version-control
github
Кевин Уитакер
источник
источник
ssh-add ~/.ssh/id_rsa_COMPANY
<br/> попросить ssh-agent включить его для использования. <hr /> Rest отлично работает для меня с вышеупомянутым руководством.Ответы:
Все, что вам нужно сделать, это настроить настройки SSH с несколькими парами ключей SSH.
По этой ссылке легко перейти (спасибо, Эрик): http://code.tutsplus.com/tutorials/quick-tip-how-to-work-with-github-and-multiple-accounts--net-22574
Генерация ключей SSH (Win / msysgit) https://help.github.com/articles/generating-an-ssh-key/
Кроме того, если вы работаете с несколькими репозиториями, используя разные персоны, вам необходимо убедиться, что в ваших отдельных репозиториях пользовательские настройки соответственно изменены:
Настройка имени пользователя, электронной почты и токена GitHub - переопределение настроек для отдельных репозиториев https://help.github.com/articles/setting-your-commit-email-address-in-git/
Надеюсь это поможет.
Примечание: Некоторые из вас могут требовать, чтобы разные электронные письма использовались для разных репозиториев. В git 2.13 вы можете настроить электронную почту на основе каталога, отредактировав глобальный конфигурационный файл, который находится по адресу:
~/.gitconfig
используя условия, например, так:И тогда ваша рабочая конфигурация ~ / work / .gitconfig будет выглядеть так:
Спасибо @alexg за то, что сообщили мне об этом в комментариях.
источник
Используйте HTTPS:
изменить удаленный URL на https:
и тебе хорошо идти
Чтобы гарантировать, что коммиты выглядят как выполненные пользователем USERNAME, можно также настроить user.name и user.email для этого проекта:
источник
user.name
иuser.email
с--global
флагом, просто делать то , что он говорит , что выше , чтобы установить его на месте только для этого одного репо. Это решило много неприятностей. Теперь, чтобы удалить старый репо ....Начало в форме
Чтобы управлять git-репо под отдельной учетной записью github / bitbucket / любой другой, вам просто нужно сгенерировать новый ключ SSH.
Но прежде чем мы сможем начать толкание / потянув РЕПО с вашей второй личностью, мы должны получить вас в форму - Давайте предположим , ваша система настроена с типичной
id_rsa
иid_rsa.pub
парой ключей. Прямо сейчас твояtree ~/.ssh
выглядит такВо-первых, назовите эту пару ключей - добавление описательного имени поможет вам вспомнить, какой ключ используется для какого пользователя / удаленного
Далее, давайте сгенерируем новую пару ключей - здесь я назову новый ключ
github-otheruser
Теперь, когда мы смотрим на
tree ~/.ssh
мы видим,Далее нам нужно настроить
~/.ssh/config
файл, который будет определять наши основные конфигурации. Мы создадим его с надлежащими правами владельца на чтение / записьОткройте его в своем любимом редакторе и добавьте следующее содержимое
Предположительно, у вас будет несколько существующих репозиториев, связанных с вашей основной личностью github. По этой причине github.com по умолчанию
Host
настроен на использование вашегоmainuser
ключа. Если вы не хотите отдавать предпочтение одному аккаунту перед другим, я покажу вам, как обновить существующий репозитории в вашей системе, чтобы использовать обновленную конфигурацию ssh.Добавьте ваш новый ключ SSH в github
Перейдите на github.com/settings/keys, чтобы добавить свой новый открытый ключ
Вы можете получить содержимое открытого ключа, используя: скопируйте / вставьте его в github
Теперь ваш новый пользовательский идентификатор полностью настроен - ниже мы покажем вам, как его использовать.
Начало работы: клонирование репо
Так как же это работает вместе с git и github? Ну, потому что без курицы и яйца нельзя, мы посмотрим на клонирование существующего репо. Эта ситуация может относиться к вам, если у вас есть новая учетная запись Github для вашего рабочего места, и вы были добавлены в проект компании.
Допустим,
github.com/someorg/somerepo
уже существует, и вы были добавлены к нему - клонирование так же просто, какЭта выделенная жирным шрифтом часть должна соответствовать
Host
названию, которое мы установили в вашем~/.ssh/config
файле. Это правильно связывает git с соответствующимиIdentityFile
и правильно аутентифицирует вас с githubНачало работы: создание нового репо
Ну, потому что вы не можете иметь курицу без яиц, мы рассмотрим публикацию нового репо на вашем дополнительном аккаунте. Эта ситуация относится к пользователям, которые создают новые контент, используя свою дополнительную учетную запись github.
Давайте предположим, что вы уже проделали небольшую работу локально, и теперь вы готовы перейти на github. Вы можете следовать за мной, если хотите
Теперь настройте этот репо, чтобы использовать вашу личность
Теперь сделайте свой первый коммит
Проверьте коммит, чтобы увидеть, что ваша новая личность была использована с помощью git log
Хорошо, время, чтобы подтолкнуть к GitHub! Поскольку github еще не знает о нашем новом репо, сначала зайдите на github.com/new и создайте новое репо - назовите его somerepo
Теперь, чтобы настроить репозиторий для «общения» с github, используя правильные идентификационные данные / учетные данные, мы добавили удаленный. Предполагая, что ваше имя пользователя github для вашей новой учетной записи
someuser
...Эта выделенная жирным шрифтом часть абсолютно важна и должна соответствовать той,
Host
которую мы определили в вашем~/.ssh/config
файле.Наконец, подтолкнуть репо
Обновите существующее хранилище, чтобы использовать новую конфигурацию SSH
Скажем, у вас уже есть клонированный репозиторий, но теперь вы хотите использовать новую конфигурацию SSH. В приведенном выше примере, мы сохранили существующие операции РЕПО в такте, назначая предыдущую
id_rsa
/id_rsa.pub
пару ключей дляHost github.com
в файле конфигурации SSH. В этом нет ничего плохого, но у меня сейчас есть как минимум 5 конфигураций github, и я не люблю думать об одной из них как о конфигурации «по умолчанию» - я бы предпочел прояснить каждую из них.Прежде чем у нас было это
Так что теперь мы будем обновлять это (изменения, выделенные жирным шрифтом )
Но это означает, что теперь любое существующее хранилище с
github.com
удаленным доступом больше не будет работать с этим файлом идентификации. Но не волнуйтесь, это простое решение.Чтобы обновить любое существующее хранилище для использования вашей новой конфигурации SSH, просто откройте файл git config хранилища и обновите URL!
Обновить поле удаленного источника (изменения выделены жирным шрифтом )
Вот и все. Теперь вы можете
push
/pull
в свое удовольствиеПрава доступа к файлу ключа SSH
Если у вас возникают проблемы с вашими открытыми ключами, которые не работают должным образом, SSH достаточно строг в отношении разрешений для файлов, разрешенных для вашего
~/.ssh
каталога и соответствующих файлов ключей.Как правило, любые каталоги должны быть
700
и любые файлы должны быть600
- это означает, что они доступны только для чтения / записи - никакая другая группа / пользователь не может читать / записывать ихКак мне управлять моими SSH ключами
Я управляю отдельными ключами SSH для каждого хоста, к которому я подключаюсь, так что, если какой-либо один ключ будет скомпрометирован, мне не придется обновлять ключи в любом другом месте, где я использовал этот ключ. Это похоже на то, что когда вы получаете уведомление от Adobe о том, что 150 миллионов информации их пользователей были украдены - теперь вы должны отменить эту кредитную карту и обновить все службы, которые от нее зависят - что неприятно.
Вот как
~/.ssh
выглядит мой каталог: у меня есть один.pem
ключ для каждого пользователя, в папке для каждого домена, к которому я подключаюсь. Я использую.pem
ключи, поэтому мне нужен только один файл на ключ.И вот мой соответствующий
/.ssh/config
файл - очевидно, что материал github важен для ответа на этот вопрос о github, но этот ответ направлен на то, чтобы вооружить вас знаниями для управления вашими ssh-идентификаторами на любом количестве служб / машин.Получение вашего открытого ключа SSH из ключа PEM
Выше вы заметили, что у меня есть только один файл для каждого ключа. Когда мне нужно предоставить открытый ключ, я просто генерирую его по мере необходимости.
Поэтому, когда github запрашивает ваш открытый ключ ssh, запустите эту команду, чтобы вывести открытый ключ на стандартный вывод - копируйте / вставляйте, где это необходимо.
Обратите внимание, что это также тот же процесс, который я использую для добавления моего ключа на любой удаленный компьютер.
ssh-rsa AAAA...
Значение копируется пульта~/.ssh/authorized_keys
файлаПреобразование ваших пар ключей
id_rsa
/id_rsa.pub
в формат PEMИтак, вы хотите приручить ваши ключевые файлы и сократить некоторые ошибки в файловой системе? Конвертировать вашу пару ключей в один PEM легко
Или, следуя приведенным выше примерам, мы переименовали
id_rsa -> github-mainuser
иid_rsa.pub -> github-mainuser.pub
- такТеперь, чтобы убедиться, что мы преобразовали это правильно, вам нужно убедиться, что сгенерированный открытый ключ совпадает с вашим старым открытым ключом.
Теперь, когда у вас есть
github-mainuser.pem
файл, вы можете безопасно удалить свои старыеgithub-mainuser
иgithub-mainuser.pub
файлы - необходим только файл PEM; просто сгенерируйте открытый ключ всякий раз, когда он вам нужен ^ _ ^Создание ключей PEM с нуля
Вам не нужно создавать пару секретный / открытый ключ, а затем конвертировать в один ключ PEM. Вы можете создать ключ PEM напрямую.
Давайте создадим
newuser.pem
Получение открытого ключа SSH такое же
источник
git clone github.com-otheruser:someorg/somerepo.git
должно бытьgit clone git@github.com-otheruser:someorg/somerepo.git
(добавлениеgit@
). По крайней мере, это то, что мне было нужно.Host github.com
(User git
IdentityFile ...
Создав различные псевдонимы хоста для 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/
источник
$ ssh-add ~/.ssh/id_rsa_COMPANY
- см. Ошибка: Отказано в доступе (publickey) - Документация пользователяДетали на http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/, на которые ссылается мишаба, очень хорошо работают для меня.
С этой страницы:
Затем отредактируйте этот файл, чтобы он был примерно таким (одна запись для каждой учетной записи):
источник
git clone git@github-COMPANY/repo/name.git
для получения правильного ключа ssh, потребуется использовать либо «github.com», либо «github-COMPANY» .git clone https://github-COMPANY/GitUserName/projectname.git
не похоже на работу. Ключ по умолчанию, использующий github.com, работает просто отлично.ssh: connect to host github.com port 22: Bad file number fatal: The remote end hung up unexpectedly
, https был единственным способом до сих пор.$ git clone https://github-USER/UserName/test_project_user.git Cloning into test_project_user... error: Couldn't resolve host 'github-USER' while accessing https://github-USER/N UserName/test_project_user.git/info/refs fatal: HTTP request failed
Я не уверен, может ли это быть связано с файлом конфигурации или способом, которым я пытаюсь эмулировать ваш git-вызов с помощью https.Откройте файл конфигурации и добавьте ниже коды. (изменить в соответствии с вашей учетной записью)
Аккаунт 1
Счет 2
Аккаунт 3
Добавьте удаленный URL следующим образом
Аккаунт 1
Счет 2
Аккаунт 3
источник
PreferredAuthentications publickey
?Я использую сценарии оболочки, чтобы переключить меня на любую учетную запись, которую я хочу быть «активной». По сути, вы начинаете с нуля, настраиваете одну учетную запись и работаете правильно, а затем перемещаете эти файлы к имени с соответствующим префиксом. С этого момента вы можете использовать команду "github" или "gitxyz" для переключения:
Мне повезло с этим. Я также создал скрипт запуска в XCode (для пользователей Mac), чтобы он не собирал мой проект, если у меня не было правильной настройки (так как он использует git):
Запустите скрипт, помещенный после зависимостей (используя / bin / ksh в качестве оболочки):
РЕДАКТИРОВАТЬ: добавлены тесты для существования новых файлов и копирования старых файлов в / tmp, чтобы ответить на комментарий @naomik ниже.
источник
id_rsa
иid_rsa.pub
ключи будут удалены, они могут быть заблокированы удаленно.Этот ответ для начинающих (не Git Gurus) . У меня недавно была эта проблема, и, возможно, это только я, но большинство ответов, казалось, требовали более глубокого понимания мерзавца. После прочтения нескольких ответов о переполнении стека, включая эту ветку, вот шаги, которые мне нужно было предпринять, чтобы легко переключаться между учетными записями GitHub (например, предположим, две учетные записи GitHub, github.com/personal и gitHub.com/work ):
ls -al ~/.ssh
файлы с расширением
.pub
ваших ключей SSHтаквы должны иметь два дляpersonal
иwork
счетов. Если есть только один или нет, его время генерировать другие мудрые пропустить это.- Генерация ключа SSH : войдите в GitHub (личный или рабочий), перейдите в « Настройки» и скопируйте соответствующую электронную почту.
Теперь вернитесь в терминал и запустите
ssh-keygen -t rsa -C "the copied email"
, вы увидите:Генерация пары открытый / закрытый ключ RSA.
Введите файл, в котором нужно сохранить ключ (/.../.ssh/id_rsa):
id_rsa - это имя по умолчанию для ключа ssh, который скоро будет создан, поэтому скопируйте путь и переименуйте по умолчанию, например
/.../.ssh/id_rsa_work
если генерируете для работы аккаунт. введите пароль или просто введите, чтобы игнорировать, и вы прочитаете что-то вродеИзображение ключа randomart: и изображение. сделанный.Повторите этот шаг еще раз для своей второй учетной записи GitHub. Убедитесь, что вы используете правильный адрес электронной почты и другое имя ключа ssh (например, id_rsa_personal), чтобы избежать перезаписи.
На этом этапе вы должны увидеть две ssh-клавиши при
ls -al ~/.ssh
повторном запуске .pbcopy < ~/.ssh/id_rsa_work.pub
заменитеid_rsa_work.pub
на то, что вы назвали своим.Теперь, когда наш ключ SSH копируется в буфер обмена, вернуться в GitHub счет [Убедитесь , что вы вошли в систему на рабочей учетной записи , если ключ SSH скопированного
id_rsa_work
] и перейдите кНастройки - SSH и GPG ключи и нажмите на ключевой Новый SSH кнопку (не Новый ключ GPG между прочим: D)
дайте некоторое название для этого ключа, вставьте ключ и нажмите Add SSH key. Вы либо успешно добавили ключ ssh, либо заметили, что все это время было нормально (или вы получили ошибку, потому что выбрали новый ключ GPG вместоНовый ключ SSH : D).
Отредактируйте глобальную конфигурацию 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
Готово !, теперь при попытке вытолкнуть или вытащить из репо вас спросят, какая учетная запись GitHub должна быть связана с этим репо, и его спросили только один раз, локальная конфигурация запомнит эту ссылку, а не глобальную конфигурацию, чтобы вы могли работать на разных репо, которые связаны с разными учетными записями без необходимости каждый раз редактировать глобальную конфигурацию.
источник
Проще и проще исправить, чтобы избежать путаницы ..
Для пользователей Windows использовать несколько или разные учетные записи git для разных проектов.
Следующие шаги: Перейти панель управления и поиск диспетчера учетных данных. Затем перейдите в диспетчер учетных данных -> учетные данные Windows
Теперь удалите узел git: https // github.com под заголовком « Общие учетные данные»
Это удалит текущие учетные данные. Теперь вы можете добавить любой проект через git pull, он запросит имя пользователя и пароль.
Когда вы сталкиваетесь с какой-либо проблемой с другим аккаунтом, делайте то же самое.
Спасибо
обратитесь к изображению
источник
просто выяснил это для Windows, используя учетные данные для каждого репо:
Формат учетных данных. https://github.com . сообщает помощнику по учетным данным URL-адрес для учетных данных. 'UseHttpPath' указывает менеджеру учетных данных использовать путь для учетных данных. Если useHttpPath не указан, диспетчер учетных данных сохранит одно учетное имя для https://github.com . Если он включен, диспетчер учетных данных будет хранить несколько учетных данных, что я и хотел.
источник
Я нашел этот драгоценный камень очень полезным: sshwitch
https://github.com/agush22/sshwitch
http://rubygems.org/gems/sshwitch
Помогает выключить ssh ключи. Не забудьте сначала сделать резервную копию всего!
Также, чтобы убедиться, что коммиты имеют правильный адрес электронной почты, связанный с ними, я позаботился о том, чтобы файл ~ / .gitconfig имел правильный адрес электронной почты.
источник
Помимо создания нескольких ключей SSH для нескольких учетных записей, вы также можете добавить соавторов в каждый проект, используя одни и те же адреса электронной почты учетной записи, и постоянно хранить пароль.
Я настроил несколько учетных записей с разными адресами электронной почты, затем поместил одного и того же пользователя и адрес электронной почты в каждую учетную запись в качестве одного из соавторов. Таким образом, я могу получить доступ ко всем аккаунтам без добавления ключа SSH или переключения на другое имя пользователя и адрес электронной почты для аутентификации.
источник
Самый простой и понятный подход (ИМХО) - никаких конфигурационных файлов не слишком много хлопот
Просто создайте другой ключ ssh.
Допустим, у вас есть новая рабочая учетная запись GitHub, просто создайте для нее новый ключ:
Теперь у вас должно быть старое и новое, чтобы увидеть их, запустите:
Вы должны запустить выше только один раз.
С этого момента каждый раз, когда вы хотите переключиться между ними, просто запустите:
Чтобы переключиться на старый, запустите снова:
источник
Еще один более простой способ - использовать несколько приложений для настольных компьютеров, например то, что я делаю, использовать учетную запись A на рабочем столе Github и использовать учетную запись B на Github Kraken.
источник
IntelliJ Idea имеет встроенную поддержку этого https://www.jetbrains.com/help/idea/github.html#da8d32ae
источник
В случае, если вы не хотите связываться с
~/.ssh/config
файлом, упомянутым здесь, вы можете вместо этого запуститьgit config core.sshCommand "ssh -i ~/.ssh/custom_id_rsa"
в репо, где вы хотите зафиксировать из другой учетной записи.Остальная часть настройки такая же:
Создайте новый ключ SSH для второй учетной записи с
ssh-keygen -t rsa -f ~/.ssh -f ~/.ssh/custom_id_rsa
Войдите в github с помощью другой учетной записи, перейдите по адресу https://github.com/settings/keys и вставьте содержимое
~/.ssh/custom_id_rsa.pub
Убедитесь, что вы используете SSH вместо HTTPS в качестве удаленного URL:
git remote set-url origin git@github.com:upstream_project_teamname/upstream_project.git
источник
Вам не нужно вести два разных аккаунта для личного и рабочего. Фактически, Github рекомендует поддерживать единую учетную запись и помогает объединить обе учетные записи.
Перейдите по ссылке ниже, чтобы объединить, если вы решите, что нет необходимости поддерживать несколько учетных записей.
https://help.github.com/articles/merging-multiple-user-accounts/
источник
В отличие от других ответов, где вам нужно выполнить несколько шагов, чтобы использовать две разные учетные записи github с одного компьютера, для меня это сработало в два этапа .
Вам просто нужно:
1) создать пару открытых и закрытых ключей SSH для каждой учетной записи в
~/.ssh
месте с разными именами и2) добавить сгенерированные открытые ключи в соответствующую учетную запись в разделе
Settings
>>SSH and GPG keys
>>New SSH Key
.Чтобы сгенерировать пары открытого и закрытого ключей SSH, используйте следующую команду:
В результате вышеупомянутых команд
id_rsa_WORK
иid_rsa_WORK.pub
файлы будут созданы для вашей рабочей учетной записи (ex - git.work.com)id_rsa_PERSONAL
иid_rsa_PERSONAL.pub
будут созданы для вашей личной учетной записи (ex - github.com).После создания скопируйте содержимое из каждого
*.pub
файла public ( ) и выполните Шаг 2 для каждой учетной записи.PS : Нет необходимости делать запись хоста для каждой учетной записи git в
~/.ssh/config
файле, как указано в других ответах, если имя хоста ваших двух учетных записей различается.источник
Если у вас установлен WSL, вы можете иметь две отдельные учетные записи git - одну в WSL и одну в Windows.
источник
Вы должны и не должны подталкивать к проекту с некоторыми общими учетными данными. После запуска на новом компьютере выполните следующие шаги для настройки и правильного использования учетных данных gitlab:
Все это так:
источник
Создайте новый ключ SSH в вашем терминале / командной строке.
ssh-keygen -t rsa -C «ваш электронный адрес»
Затем будет показано следующее:
Генерация пары открытый / закрытый ключ RSA. Введите файл для сохранения ключа (/home/your_username/.ssh/id_rsa):
Скопируйте и вставьте путь, за которым следует идентифицируемое имя файла:
4) Затем вам будет предложено следующее:
5) Теперь вы можете ввести следующую команду, чтобы увидеть все ключи SSH, которые есть на вашем локальном компьютере:
Вы должны увидеть ваш новый файл ключей SSH. Как вы можете видеть, у меня есть и id_rsa_test, и id_rsa_personal.pub.
6) Далее вам нужно скопировать ключ SSH, который хранится в файле id_rsa_personal.pub. Вы можете открыть это в текстовом редакторе по вашему выбору. В настоящее время я использую атом, поэтому я открыл файл с помощью следующей команды:
Затем вы получите что-то похожее на это:
ssh-rsa AAB3HKJLKC1yc2EAAAADAQABAAABAQCgU5 + ELtwsKkmcoeF3hNd7d6CjW + dWut83R / Dc01E / YzLc5ZFri18doOwuQoeTPpmIRVDGHHHHHHHHHHHGHHGMHHGMHHGMHHMXMHHMXMWHHMHMHRXWHHHMHRXWMHHMHRXMHHMHMD1
7) Скопируйте его и перейдите в свою учетную запись GitHub → Настройки → SSH и ключи GPG. 8) Нажмите Новый ключ SSH. Скопируйте ключ, дайте ему название и добавьте его. 9) Добавить ключ от терминала
10) Настройте пользователя и пароль.
11) Мы готовы совершить и подтолкнуть сейчас.
источник
Если вы создали или клонировали другой репозиторий и не смогли извлечь
origin
илиupstream
добавить ключ ssh в этот каталог, с помощью следующей команды сработало.Это ошибка, которую я получил здесь:
Я использовал следующую команду, это работает:
ssh-add ~/.ssh/id_rsa_YOUR_COMPANY_NAME
источник