Git push требует имени пользователя и пароля

Я клонировал репозиторий Git из своей учетной записи GitHub на свой компьютер.

Я хочу работать как со своим ПК, так и с ноутбуком, но с одной учетной записью GitHub.

Когда я пытаюсь отправить или загрузить GitHub с помощью своего ПК, мне потребуется имя пользователя и пароль, но не когда я использую ноутбук!

Я не хочу вводить свое имя пользователя и пароль каждый раз, когда взаимодействую с origin. Что мне здесь не хватает?


person TooCooL    schedule 03.07.2011    source источник
comment
Да, но что мне делать? Я сгенерировал кейген, что еще?   -  person TooCooL    schedule 04.07.2011
comment
Вам необходимо зарегистрировать pubkey в своей учетной записи Github (github.com/account/ssh) и настроить Клиент SSH для использования правильного имени пользователя.   -  person jwodder    schedule 04.07.2011
comment
Я сделал все это, но для этого требуются имя пользователя и пароль! можно ли использовать одну учетную запись с двумя ПК?   -  person TooCooL    schedule 04.07.2011
comment
Этот вопрос достаточно хорошо охватывает все ваши варианты: stackoverflow.com/questions/5343068/   -  person ford    schedule 05.04.2013
comment
Больше не нужно переходить на ssh. Это возможно и с HTTPS. Проверьте мой ответ.   -  person Varun Achar    schedule 05.04.2013
comment
Я предпочитаю использовать зашифрованный netrc.gpg, в котором я могу хранить все свои учетные данные для удаленного репозитория https. И это хорошо работает с новой двухфакторной аутентификацией GitHub!   -  person VonC    schedule 12.09.2013
comment
Я не знаю, как часто я попадал в эту ветку, потому что я использовал URL-адрес https вместо ssh ...   -  person Denny Mueller    schedule 18.06.2015
comment
Примечание для тех, кто использует двухфакторную авторизацию: вам нужно будет использовать токен доступа вместо пароля. См. здесь   -  person Josh Desmond    schedule 23.06.2017
comment
Отвечает ли это на ваш вопрос? https://stackoverflow.com/questions/5343068/is-there-a-way-to-cache-https-credentials-for-pushing-commit   -  person Braiam    schedule 02.06.2021


Ответы (23)


Частая причина - клонирование с использованием протокола HTTPS по умолчанию вместо SSH. Вы можете исправить это, перейдя в свой репозиторий, нажав Клонировать или загрузить, затем нажав кнопку Использовать SSH над полем URL-адреса и обновив URL-адрес своего исходного пульта, например:

git remote set-url origin [email protected]:username/repo.git

Вы можете проверить, добавили ли вы пульт как HTTPS или SSH, используя:

git remote -v

Это задокументировано на GitHub: Переключение удаленных URL-адресов с HTTPS на SSH.

person Tekkub    schedule 03.07.2011
comment
Тогда, как я уже сказал, ваши ssh-ключи никогда не вступят в игру. Если вы хотите использовать ssh, вам нужно вместо этого использовать URL-адрес клона ssh - person Tekkub; 05.07.2011
comment
А чтобы выяснить, как изменить URL-адрес, перейдите сюда: stackoverflow.com/a/2432799/60488 (спойлер: git remote set-url origin git://new.url.here ) - person Johan Kool; 30.11.2011
comment
Вы можете проверить свои пульты с помощью команды: git remote -v, а затем, если это неверно, вы можете использовать: git remote rm aliasname (например, origin) и повторно добавить, используя: git remote add [email protected]: xxxxx, как уже упоминалось здесь, пульт в стиле https не будет использовать ваши SSH-ключи. - person Tom; 06.01.2012
comment
другой способ изменить это - отредактировать .git/config в вашем репо. отредактируйте URL-адрес в [remote "origin"], чтобы использовать URL-адрес git:// вместо https://. Спасибо @Tekkub - person Shreyans; 15.07.2012
comment
Это сработало для меня, имея ту же проблему с запросом имени пользователя и пароля. Обратите внимание, что username - это ваше имя пользователя github, а repo.git - это имя вашего репо (я не включил .git в конце, и это все еще работало для меня). Остальное было внесено дословно. - person Jason; 24.07.2012
comment
Выдача git remote -v с той же проблемой вернула origin https://github.com/myusername/my-repo-name.git После устранения проблемы возвращается origin [email protected]:myusername/my-repo-name (как для выборки, так и для push). Надеюсь, это будет полезно для понимания разницы. - person Jason; 24.07.2012
comment
Если вы не можете использовать ssh для ограничений безопасности (как я), вы можете сделать: git remote set-url origin https://name:[email protected]/repo.git (извлечено из комментария) - person Bruno Berisso; 31.01.2013
comment
Работает! Спасибо. Вы можете перепроверить с помощью команды git remote -v - person Abhishek Biswal; 23.06.2013
comment
Почему клонирование с использованием HTTPS является распространенной ошибкой? GitHub теперь рекомендует использовать HTTPS. - person Dennis; 14.07.2013
comment
@smftre по умолчанию так и есть, но вы можете использовать помощник для кеширования своих учетных данных . - person Dennis; 19.10.2013
comment
Я использую HTTPS уже несколько месяцев (с Git v1.8ish) без необходимости вводить свое имя пользователя / пароль. Затем я обновился до Git v2.0.1 два дня назад, и мне нужно вводить свое имя пользователя / пароль каждый раз, когда я делаю git push. Пожалуйста, объясни? - person chharvey; 26.07.2014
comment
Я получаю Permission denied (publickey) после этого. - person voltrevo; 18.10.2014
comment
Использование SSH не работает при рекурсивном клонировании подмодулей AFAIK. Если у этих подмодулей нет URL-адреса ssh, но он устарел, поскольку не позволяет пользователям без настройки ssh рекурсивно клонировать репозиторий. - person Chiel ten Brinke; 06.12.2014
comment
@chharvey А теперь GitHub снова рекомендует HTTPS! См. help.github. ru / article / set-up-git / - person bela83; 11.05.2015
comment
git также может кэшировать ваше имя пользователя и пароль. Настройка занимает 30 секунд. help.github.com/articles/caching -ваш-github-пароль-в-git / - person user137717; 14.08.2015
comment
Согласно ответу К. М. Ракибула Ислама ниже, если вы используете Mac OSX, вы можете сохранить свой пароль Github в связке ключей, чтобы вам не нужно было вводить пароль каждый раз, даже через HTTPS. help.github.com/articles/caching-your-github -password-in-git - person WillJones; 22.06.2016
comment
Возможно, это потому, что я использую сервер Stash, но мне пришлось указать часть URL-адреса протокола (ssh: //), чтобы он работал на меня: git remote set-url origin ssh://git@stash-server/my/app/repo.git - person CFL_Jeff; 03.02.2017
comment
Спасибо @BrunoBerisso за комментарий о добавлении учетных данных к URL-адресу http (s). Если вам все еще нужна безопасность, а также проверка работоспособности перед нажатием, вы можете опустить свой пароль в URL: git remote set-url origin https://[email protected]/repo.git. - person Akin Williams; 31.05.2017
comment
Я получаю fatal: No such remote 'origin' - person Sören; 28.01.2018
comment
Просто подумал, что хочу указать, что вы можете настроить ssh для использования порта 443 различными способами, включая ваш ~/.ssh/config файл, и в этом случае AFAIK любой, кто может использовать https, может использовать ssh с github, по крайней мере, поскольку они поддерживают ssh на порту 443. пример ~ / .ssh / config - person gman; 14.03.2018
comment
Обратите внимание, что для использования метода SSH вам также необходимо настроить SSH-ключ на вашем компьютере и связать его с вашей учетной записью Github. - person J Woodchuck; 06.05.2018
comment
Я исправил проблему с отказом в разрешении, переименовав свой закрытый SSH-ключ в id_rsa. - person mommi84; 20.11.2018
comment
Я также считаю, что клонирование с помощью https - плохая идея, потому что вы добавляете дополнительный механизм, который должен быть защищен, чтобы можно было тянуть / толкать, не входя каждый раз в проход. С SSH у вас есть инфраструктура открытых ключей, которая позаботится об этом. Я не знаю, насколько безопасен механизм кеширования, но зачем его вообще использовать, если клонирование ssh дает вам сверхспособности? - person Gonzalo Aguilar Delgado; 11.03.2019
comment
git удаленный источник set-url name: [email protected]/repo.git, Если @ присутствует в пароле, вам нужно закодировать его с помощью% 40 like, передать @ word - ›передать% 40word. - person jkr; 17.12.2020
comment
У меня блестяще работал в Windows WSL Ubuntu. Я надеюсь, что Github обновляет их впервые, делая это ?? предлагать в свежих репозиториях предлагать SSH вместо HTTPS. - person John Gorenfeld; 03.06.2021

Постоянная аутентификация в репозиториях Git

Выполните следующую команду, чтобы включить кэширование учетных данных :

$ git config credential.helper store
$ git push https://github.com/owner/repo.git

Username for 'https://github.com': <USERNAME>
Password for 'https://[email protected]': <PASSWORD>

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

git config --global credential.helper 'cache --timeout 7200'

После включения кэширования учетных данных они будут кэшироваться на 7200 секунд (2 часа).

person Jay Patel    schedule 17.02.2015
comment
вам также может потребоваться изменить ваш удаленный URL на git remote set-url origin https://[email protected]/<owner>/<repo>.git. Это также работает с 2FA - person Bron Davies; 25.10.2018
comment
Это должен быть принятый ответ. Он точно отвечает на вопрос. - person Atscub; 24.06.2019
comment
будет ли он автоматически удален из файлов ubuntu после 7200 в целях безопасности? - person usama; 27.02.2020
comment
или 43 200 за 12 часов. Вы входите в систему один раз в день. Для некоторых это может быть более разумным. - person Urasquirrel; 12.03.2020
comment
Только что попробовал - получил: fatal: protocol 'https' is not supported - person Joel; 01.04.2020
comment
отличный ответ - с одним недостатком: две упомянутые команды git config должны соответствовать друг другу. Когда один ссылается на --global, а другой - не на прямое копирование и вставка, не достигается желаемый эффект. - person SebastianH; 29.05.2020
comment
Действительно ли кеширование отменяет что-либо из команды store? Я думаю, что этот ответ вводит в заблуждение, поскольку установка параметров кеширования будет спорной, если у вас уже есть вещи, хранящиеся постоянно. Нет? - person topher217; 01.09.2020

Я только что столкнулся с той же проблемой, и самым простым решением, которое я нашел, было использование URL-адреса SSH вместо HTTPS-адреса:

ssh://[email protected]/username/repo.git

А не это:

https://github.com/username/repo.git

Теперь вы можете проверить с помощью только ключа SSH вместо username и password.

person Anton Salikhmetov    schedule 14.06.2012
comment
Самый простой способ решить проблему - отредактировать удаленный URL-адрес. Это все. Выполнено. Спасибо! - person JOM; 20.06.2013
comment
Это сработало для меня, но сначала мне нужно было решить эту проблему: stackoverflow.com/ questions / 2643502 / - person Sridhar Sarnobat; 19.09.2013
comment
чтобы настроить SSH-ключ, вы можете обратиться к help.github.com / article / подключение-к-github-with-ssh - person ksridhar; 22.01.2019

Помимо перехода на SSH, вы также можете продолжать использовать HTTPS, если вы не против указать свой пароль открытым текстом. Поместите это в свой ~/.netrc, и он не будет запрашивать ваше имя пользователя / пароль (по крайней мере, в Linux и Mac):

machine github.com
       login <user>
       password <password>

Дополнение (см. второй комментарий VonC): в Windows имя файла %HOME%\_netrc.

Также прочтите первый комментарий VonC, если вы хотите зашифровать.

Еще одно дополнение (см. комментарий пользователя 137717), которое вы можете использовать, если у вас Git 1.7.10 или новее.

Кэшируйте свой пароль GitHub в Git с помощью помощника по учетным данным :

Если вы клонируете репозитории GitHub с помощью HTTPS, вы можете использовать помощник по учетным данным, чтобы сообщить Git, чтобы он запомнил ваше имя пользователя и пароль GitHub каждый раз, когда он обращается к GitHub.

Это также работает в Linux, Mac и Windows.

person rintcius    schedule 19.01.2013
comment
Да, он работает в Linux, но не работает с gitbash в Windows. - person Dielson Sales; 12.04.2013
comment
@dolmen Я понимаю, что вы имеете в виду, но если вы не против указать свой пароль открытым текстом, вы можете ... зашифровать его;) См. stackoverflow.com/a/18362082/6309. и это даже совместимо с двухфакторной аутентификацией (2FA) Github: stackoverflow.com/a/18607931/6309 - person VonC; 21.11.2013
comment
@Sales он отлично работает из сеанса DOS или git bash в Windows, если вы называете свой файл %HOME%\_netrc (вместо ~/.netrc). См. Также stackoverflow.com/a/18362082/6309, чтобы зашифровать этот файл. - person VonC; 21.11.2013
comment
Это очень хорошо работает в Linux, особенно при использовании git через VPN. - person Evan Hu; 27.12.2014
comment
вам не нужно вводить его в открытый текст или шифровать. вспомогательная утилита кэширует его за вас, и на настройку уходит 30 секунд. help.github.com/articles/caching -ваш-github-пароль-в-git / - person user137717; 14.08.2015
comment
Git включает инструкции для каждой платформы на этой странице. - person user137717; 14.08.2015
comment
Зачем вам делать это вместо того, чтобы просто добавлять SSH-ключ? - person Banjocat; 16.01.2016
comment
Это мне помогло. Мы можем подключиться к внешней сети только через https, все остальные исходящие порты заблокированы. - person Jerald Sabu M; 29.03.2018
comment
%HOME% есть только в Git Bash и является абсолютным путем. Его не существует в сеансе CMD. Кажется, это комбинация% HOMEDRIVE% и% HOMEPATH% (но в формате пути Linux / Unix). - person Peter Mortensen; 17.06.2019
comment
@Banjocat некоторые компании (например, моя, к сожалению) не разрешают внешние исходящие соединения через порт 22. Поэтому для доступа к таким сайтам, как github.com без пароля, ключи ssh бесполезны, поскольку вместо этого необходимо использовать https. - person ericcurtin; 22.08.2019

Для непосвященных, которых смущают предыдущие ответы, вы можете сделать:

git remote -v

Что ответит чем-то вроде

origin    https://[email protected]/yourname/yourrepo.git (fetch)
origin    https://[email protected]/yourname/yourrepo.git (push)

Затем вы можете запустить команду, которую предлагали многие другие, но теперь вы знаете свое имя и репозиторий сверху, поэтому можете просто вырезать и вставить yourname/yourrepo.git из приведенного выше в:

git remote set-url origin [email protected]:yourname/yourrepo.git
person Davide    schedule 13.02.2014
comment
Я пробовал это. Он просит меня paraphrase каждый раз. Я не устанавливал один - person samayo; 07.06.2014
comment
Что заменяет yourrepo? - person Raphi; 02.06.2016
comment
@Raphi запустите git remote -v и посмотрите, что выйдет - person Davide; 04.06.2016
comment
К этому совету следует добавить другие ответы. - person Bennett Brown; 12.06.2016
comment
Спасибо, у меня это сработало :) - person Adil; 23.02.2021
comment
просто примечание, для репозиториев в организации, а не в личных учетных записях, это выглядит следующим образом: https://github.com/orgname/yourrepo.git - person Nikhil VJ; 18.06.2021

Если вы используете SSH и ваш закрытый ключ зашифрован кодовой фразой, то вам все равно будет предложено ввести кодовую фразу / пароль для закрытого ключа при выполнении сетевых операций с Git как push, pull и fetch.

Используйте ssh-agent, чтобы сохранить парольную фразу / пароль секретного ключа.

Если вы не хотите вводить кодовую фразу каждый раз, вы можете использовать ssh-agent для сохранения учетных данных секретной ключевой фразы один раз за сеанс терминала, как я объясняю в мой ответ на Не удалось открыть соединение с вашим агентом аутентификации:

$ eval `ssh-agent -s`
$ ssh-add

В Windows msysgit Bash вам нужно оценить вывод ssh-agent, но я не уверен, нужно ли вам делать то же самое в других средах разработки и операционных системах.

ssh-add ищет закрытый ключ в вашей домашней .ssh папке с именем id_rsa, которое является именем по умолчанию, но вы можете передать путь к файлу ключу с другим именем.

Убить агента

Когда вы закончите сеанс терминала, вы можете завершить работу ssh-agent с помощью флага уничтожения -k:

$ ssh-agent -k

Как объясняется в ssh-agent руководстве:

-k

Убить текущего агента (заданного переменной среды SSH_AGENT_PID).

Дополнительный тайм-аут

Кроме того, он может принимать необязательный параметр тайм-аута, например:

$ ssh-add -t <timeout>

где <timeout> имеет формат <n>h для <n> часов, <n>m для <n> минут и т. д.

Согласно ssh-agent manual:

-t life

Задайте значение по умолчанию для максимального времени жизни идентификаторов, добавленных к агенту. Время жизни может быть указано в секундах или в формате времени, указанном в sshd_config (5). Время жизни, указанное для удостоверения с помощью ssh-add (1) переопределяет это значение. Без этой опции максимальное время жизни по умолчанию - вечно.

Подробнее см. на этой странице форматы времени.

Предупреждение безопасности для пользователей Cygwin

Пользователи Cygwin должны знать о потенциальном риске безопасности при использовании ssh-agent в Cygwin.:

люди должны знать о потенциальных опасностях ssh-agent в Cygwin 1, хотя при локальном netstat и удаленном сканировании портов не видно, что порт, указанный в / tmp / ssh-foo, доступен для всех ...?

[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html

И по указанной ссылке:

однако обратите внимание, что доменные сокеты Cygwin для Unix ФУНДАМЕНТАЛЬНО НЕ БЕЗОПАСНЫ, и поэтому я категорически НЕ ОБЕСПЕЧИВАЮ использования ssh-agent под Cygwin.

когда вы запускаете ssh-agent под Cygwin, он создает сокет AF_UNIX в каталоге /tmp/ssh-$USERNAME/. В Cygwin сокеты AF_UNIX эмулируются через сокеты AF_INET. В этом легко убедиться, если заглянуть в /tmp/ssh-$USERNAME/agent-socket-* файл через Блокнот. Вы увидите что-то вроде

!<socket >2080

потом запускай netstat -a и удивляйся! У вас есть программа, которая слушает порт 2080. Это ssh-agent. Когда ssh получает запрос RSA от сервера, он обращается к соответствующему /tmp/ssh-$USERNAME/agent-socket-* (в нашем случае в Cygwin это означает, что он откроет соединение с localhost:2080) и просит ssh-agent обработать запрос RSA с помощью имеющегося у него закрытого ключа, а затем он просто передает ответ, полученный от ssh-agent, на сервер.

В Unix такой сценарий работает без проблем, потому что ядро ​​Unix проверяет разрешения, когда программа пытается получить доступ к сокету AF_UNIX. Однако для сокетов AF_INET соединения являются анонимными (читай «небезопасными»). Представьте, что у вас запущен ssh-агент Cygwin. Злоумышленник может просканировать ваш ящик, найти открытый порт, используемый ssh-agent, открыть соединение с вашим SSH-сервером, получить от него запрос RSA, отправить его вашему ssh-агенту через открытый порт, который он / она нашел, получить Ответ RSA, отправьте его на сервер SSH и вуаля, он / она успешно вошли на ваш сервер как вы.

person Community    schedule 21.08.2013
comment
Звучит красиво и детально. Я позаботился о http://stackoverflow.com/a/18362082/6309, а вы позаботились о ssh-соединениях! +1 - person VonC; 22.08.2013
comment
фантастика. Это на самом деле помогло мне, потому что моя ситуация была немного другой, как будто мой пульт был настроен на ssh вместо https, он все еще запрашивал пароль, который нужно вводить каждый раз, когда я вводил git push, git pull и т. Д., И Мне не понравились предложения по хранению кредитов, хотя это моя личная машина (как лучшая практика). Это предложение ssh-add действительно помогло. Спасибо :) - person itsraghz; 22.10.2020

Источник: Настроить Git

Следующая команда сохранит ваш пароль в памяти на некоторое время (для Git 1.7.10 или новее).

$ git config --global credential.helper cache
# Set git to use the credential memory cache

$ git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after one hour (setting is in seconds)
person Sagar Rakshe    schedule 01.09.2013
comment
Я предпочитаю справку по учетным данным netrc (stackoverflow.com/a/18362082/6309) для кеширования нескольких < / i> учетные данные (без необходимости запоминать все пароли). Но если вы работаете в Windows и хотите использовать кеш памяти, вам понадобится winstore (stackoverflow.com/a/15310274/6309) - person VonC; 01.09.2013
comment
ИМХО, это пока лучший ответ. - person Chiel ten Brinke; 06.12.2014

Когда вы используете https для Git pull & push, просто настройте remote.origin.url для своего проекта, чтобы не вводить имя пользователя (или / и пароль) каждый раз, когда вы нажимаете.

Как настроить remote.origin.url:

URL format:
    https://{username:password@}github.com/{owner}/{repo}

Parameters in URL:

* username 
Optional, the username to use when needed.
authentication, if specified, no need to enter username again when need authentication. Don't use email; use your username that has no "@", otherwise the URL can't be parsed correctly, * password optional, the password to use when need authentication. If specified, there isn't any need to enter the password again when needing authentication. Tip: this value is stored as plain text, so for security concerns, don't specify this parameter, * e.g git config remote.origin.url https://[email protected]/eric/myproject

@Update - с использованием ssh

Я думаю, что использование протокола ssh - лучшее решение, чем https, хотя этап настройки немного сложнее.

Грубые шаги:

  • Создайте ключи ssh с помощью команды, например ssh-keygen в Linux, msysgit в Windows предоставьте аналогичные команды.
  • Храните закрытый ключ на локальном компьютере в нужном месте, например, ~/.ssh. И добавьте его в ssh-агент с помощью команды ssh-add.
  • Загрузите открытый ключ на сервер Git.
  • Измените remote.origin.url репозитория Git на стиль ssh, например, [email protected]:myaccount/myrepo.git
  • Затем, когда вы нажимаете или нажимаете, нет необходимости вводить имя пользователя или пароль.

Советы:

  • Если в вашем ssh-ключе есть кодовая фраза, вам необходимо вводить ее при первом использовании ключа после каждого перезапуска вашего компьютера по умолчанию.

@Update - переключение между протоколами https и ssh.

Достаточно просто изменить remote.origin.url, или вы можете отредактировать repo_home/.git/config напрямую, чтобы изменить значение (например, используя vi в Linux).

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

Например,

[remote "origin"]
        url = [email protected]:myaccount/myrepo.git
        # url = https://[email protected]/myaccount/myrepo.git
        fetch = +refs/heads/*:refs/remotes/origin/*
person user218867    schedule 25.12.2013
comment
Вы уверены, что URL-адрес на основе http [s] поддерживает расширение имени пользователя? В руководстве git-fetch(1) это упоминается только для URL-адресов, основанных на _2 _ / _ 3_. - person day; 08.01.2014
comment
@plmday да, я использую его, моя версия git - 1.8.2.3 и 1.8.4, я не уверен, изменится ли более высокая версия по этому поводу. - person user218867; 09.01.2014
comment
NB, указав свой пароль в URL-адресе (даже при использовании HTTPS), означает, что он виден всем, находящимся между вами и вашим репозиторием. - person William; 01.08.2014
comment
Нет, вводить пароль в https://username:[email protected]/ безопасно. См. stackoverflow.com/questions/4980912/ < / а> - person slowhand; 10.06.2015
comment
И это было то, что я искал (для полной автоматизации) - person Joshua; 19.04.2016
comment
@Joshua Ответ старый, ssh на самом деле лучшее решение, это тоже полная автоматизация, я использую ssh сейчас, если только он не работает из-за проблем с сетью. - person user218867; 25.04.2016
comment
@flybird: нельзя использовать ssh, потому что сервер его не поддерживает. - person Joshua; 25.04.2016
comment
Этот метод https работал у меня на Github. Однако помните, что имя пользователя на Github не является вашим адресом электронной почты. Да, на Github вы можете войти в систему, используя любое из полей для имени пользователя. Однако для коммитов git необходимо специально использовать свое имя пользователя. - person Volomike; 29.05.2020
comment
Спасибо, последний хак - редактирование repo_home/.git/config помогло мне. Я уже настраивал ключи ssh до этого. - person Nikhil VJ; 18.06.2021

Вы можете кэшировать свой пароль GitHub в Git:

Просто следуйте инструкциям из официальной документации GitHub.

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

person K M Rakibul Islam    schedule 19.12.2014
comment
это лучший ответ здесь, и он должен быть принят IMO - person TheZuck; 18.01.2016
comment
Согласен, ответ со ссылкой на официальную документацию должен иметь приоритет. Я с удовольствием следую их инструкциям и предпочитаю использовать стандартные соглашения. - person johnnieb; 15.10.2017

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

Посетите страницу Settings -> Developer Settings -> Personal Access Tokens в GitHub (https://github.com/settings/tokens/new) и сгенерируйте новый токен со всеми разрешениями Repo:

создать токен личного доступа GitHub

На странице отобразится новое значение токена. Сохраните это значение и используйте его вместо пароля при отправке в репозиторий на GitHub:

> git push origin develop
Username for 'https://github.com': <your username>
Password for 'https://<your username>@github.com': <your personal access token>
person Adil B    schedule 06.06.2020
comment
В целях безопасности я считаю, что это лучший вариант https. Кажется, что хранить ключ гораздо лучше, чем хранить где-нибудь свой мастер-пароль в виде обычного текста. Параметры кеширования обеспечивают дополнительные уровни защиты, позволяя кому-либо взаимодействовать только с текущим пользователем на вашем компьютере, но если кто-то получит доступ к вашему компьютеру до того, как кеш будет удален, потенциальный риск все равно существует. При этом, даже если произойдет наихудший сценарий, описанный выше, вы можете просто удалить ключ из github с другого компьютера. - person topher217; 01.09.2020
comment
Я думаю, вам все равно нужно добавить git config credential.helper store до нажатия или иного взаимодействия с пультом дистанционного управления, иначе этот токен больше не будет присутствовать в следующий раз, когда вы отправитесь взаимодействовать с пультом. Верно? - person topher217; 01.09.2020
comment
@ topher217: правильно. Вы можете использовать помощник по учетным данным Git или даже что-то вроде связки ключей Mac OSX, чтобы хранить эти токены для повторного использования. - person Adil B; 01.09.2020

Что сработало для меня, так это отредактировать .git/config и использовать

[remote "origin"]
        url = https://<login>:<password>@gitlab.com(...).git

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

person WoJ    schedule 31.07.2016
comment
это спасло мне день! - person Asanka sanjaya; 15.12.2020

Вот еще вариант:

Вместо того, чтобы писать

git push origin HEAD

Вы могли написать:

git push https://user:[email protected]/path HEAD

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

person Tomov    schedule 24.04.2018
comment
В Bash добавление одного или нескольких ведущих пробелов обычно не допускает попадания в историю. Но не в Git Bash. - person Peter Mortensen; 17.06.2019

Если SSH-ключ или .netrc файл вам не подошли, то другое простое, но менее безопасное решение, которое может сработать для вас, - это git-credential-store - помощник для хранения учетных данных на диске:

git config --global credential.helper store

По умолчанию учетные данные будут сохранены в файле ~/.git-credentials. Он будет создан и записан в.

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

person rumman0786    schedule 12.04.2018

Я была такая же проблема.

Итак, я изменил .git/config файл из своего проекта,

url = https://github.com/<your-user-here>/<your-repo-here>

to

url = [email protected]:<your-user-here>/<your-repo-here>

и добавил открытый ключ SSH в профиль Git, который находится в настройке.

Для открытого ключа SSH:

cat ~/.ssh/id_rsa.pub
person shrikant    schedule 09.06.2015
comment
с cat ~/.ssh/id_rsa.pub получите ключ rsa и вставьте его в настройку веб-портала git. - person Anupam Maurya; 11.04.2019

Для пользователей Windows Git после запуска git config --global credential.helper store, если он все еще запрашивает пароль, вам лучше проверить, куда записан файл конфигурации, используя эту команду

git config --list --show-origin

В моем случае после ручного редактирования файла конфигурации 'C: \ Program Files \ Git \ mingw64 \ etc \ gitconfig' и добавления следующего текста это сработало.

[credential]
    helper = store
person Liang    schedule 30.08.2018

Обновление файла конфигурации Git напрямую (если вы не хотите запоминать причудливые команды):

Откройте ваш .git/config файл в любимом текстовом редакторе. Он будет в папке, которую вы клонировали, или в репозитории, в котором вы выполнили git init. Войдите в этот репозиторий. .git - это скрытая папка, и нажатие Ctrl + H должно показать скрытую папку (ls -a в терминале).

Ниже приведен образец файла .git/config. Скопируйте и вставьте эти строки и обязательно обновите эти строки своей информацией Git.

[user]
        name = Tux
        email = [email protected]
        username = happy_feet

[remote "origin"]
        url = https://github.com/happy_feet/my_code.git
        fetch = +refs/heads/*:refs/remotes/origin/*

Измените часть URL-адреса на следующий формат для SSH:

url = [email protected]:happy_feet/my_code.git

(Вышеуказанные форматы не меняются с различными удаленными серверами Git, такими как GitHub или Bitbucket. То же самое, если вы используете Git для контроля версий):

Примечание. Способ подключения к удаленному репозиторию Git по SSH потребует от вас добавления общедоступного SSH-ключа на удаленный сервер Git (, например, GitHub или Bitbucket. Найдите на странице настроек ключи SSH < / em>).

Чтобы узнать, как сгенерировать ключи SSH, обратитесь к: Создание ключей SSH

person 123survesh    schedule 11.03.2019
comment
Хорошая вещь в настройке [user] заключается в том, что если у вас есть учетные данные master git, даже тогда коммиты будут зарегистрированы [пользователем] в конфигурации. - person Ayush Mandowara; 03.07.2020

Если вы клонировали HTTPS вместо SSH и столкнулись с проблемой с запросом имени пользователя и пароля при извлечении, push и выборке. Решить эту проблему можно просто за UBUNTU

Шаг 1: перейдите в корневой каталог

cd ~/

создать файл .git-credentials

Добавьте это содержимое в этот файл вместе с вами usename password и githosting URL

https://user:[email protected]

Затем выполните команду

git config --global credential.helper store

Теперь вы сможете без проблем извлекать все детали из репозитория.

person Akhilraj N S    schedule 01.11.2019

Вот что сработало для меня:

git remote set-url origin https://[email protected]/username/reponame.git

Пример:

git remote set-url origin https://[email protected]/jsmith/master.git
person bennie1    schedule 09.12.2018

В основном у вас есть два варианта.

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

Если вы создали новый файл .pub для своего ПК и хотите рассматривать машины как разных пользователей, вам необходимо зарегистрировать новый файл .pub на веб-сайте GitHub.

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

ssh -vv [email protected]

Чтобы узнать больше о причинах сбоя SSH.

person ralphtheninja    schedule 03.07.2011

Обновление для HTTPS:

GitHub запустил новую программу для Windows, которая хранит ваши учетные данные при использовании HTTPS:

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

  • Загрузите программу здесь

  • Как только вы запустите программу, она отредактирует ваш .gitconfig файл. Еще раз проверьте, правильно ли он отредактировал .gitconfig, если у вас их несколько. Если он не отредактировал правильный, добавьте следующее в свой .gitconfig

    [credential]
        helper = !'C:\\Path\\To\\Your\\Downloaded\\File\\git-credential-winstore.exe'
    

    ОБРАТИТЕ ВНИМАНИЕ на разрыв строки после [credential]. Требуется.

  • Откройте клиент командной строки и попробуйте git push origin master один раз. Если он запрашивает пароль, введите его, и все готово. Пароль сохранен!

person Varun Achar    schedule 05.04.2013

Вам нужно выполнить два шага -

  1. git remote remove origin
  2. git remote add origin [email protected]:NuggetAI/nugget.git

Обратите внимание, что URL-адрес Git является URL-адресом SSH, а не URL-адресом HTTPS ... Его можно выбрать здесь:

Введите здесь описание изображения

person sapy    schedule 11.06.2018

Если вы используете Git (например, Git Bash) под Windows (и если вы не хотите переключаться с HTTPS на SSH), вы также можете использовать Git Credential Manager для Windows

Это приложение сохранит для вас имя пользователя и пароль ...

person boly38    schedule 11.06.2014

Как уже говорили многие пользователи, вам просто нужно изменить URL-адрес репозитория Git с HTTPS на SSH.

Если вы не сгенерировали SSH-ключ на своем компьютере, вам придется это сделать.

В качестве дополнительной информации, после внесения этого изменения я все еще получал ту же ошибку:

Доступ запрещен.

В моем случае проблема заключалась в том, что я использовал оболочку Windows для выполнения команды ngh; поскольку эта команда должна открывать приглашение для запроса фразы SSH, а оболочка Windows не открывает такие запросы, аутентификация просто не удалась.

Итак, мне просто нужно было открыть оболочку Git и выполнить там команду ngh, вставить фразу SSH в командную строку каждый раз, когда она просила об этом, и «вуаля» ... Просто все сработало!

person Thisisalexis    schedule 03.04.2018