Я клонировал Git-репозиторий со своей учетной записи GitHub на свой ПК.
Я хочу работать как с моим ПК, так и с ноутбуком, но с одной учетной записью GitHub.
Когда я пытаюсь нажать или вытащить GitHub с помощью моего компьютера, ему требуется имя пользователя и пароль, но не когда я использую ноутбук!
Я не хочу вводить свое имя пользователя и пароль каждый раз, когда я взаимодействую origin
. Что мне здесь не хватает?
Ответы:
Распространенной причиной является клонирование с использованием по умолчанию (HTTPS) вместо SSH. Вы можете исправить это, перейдя в свой репозиторий, нажав «Клонировать или загрузить», затем нажав кнопку «Использовать SSH» над полем URL и обновив URL-адрес удаленного источника, например:
Это задокументировано на GitHub: переключение удаленных URL-адресов с HTTPS на SSH .
источник
git remote set-url origin git://new.url.here
)git remote set-url origin https://name:password@github.com/repo.git
(извлечено из комментария здесь)Permission denied (publickey)
использование этого руководства: help.github.com/articles/generating-ssh-keys .Постоянная аутентификация в репозиториях Git
Запустите следующую команду, чтобы включить кэширование учетных данных :
Вы также должны указать срок действия кэширования ,
После включения кэширования учетных данных оно будет кэшироваться в течение 7200 секунд (2 часа) .
источник
git remote set-url origin https://git@github.com/<owner>/<repo>.git
Это также работает с 2FAfatal: protocol 'https' is not supported
Я только столкнулся с той же самой проблемой, и самое простое решение, которое я нашел, состояло в том, чтобы использовать URL-адрес SSH вместо HTTPS:
И не это
Теперь вы можете проверить с помощью только ключа SSH вместо
username
иpassword
.источник
Помимо перехода на SSH, вы также можете продолжать использовать HTTPS, если не возражаете, чтобы ввести свой пароль в виде открытого текста. Вставьте это в свой файл,
~/.netrc
и он не будет запрашивать ваше имя пользователя / пароль (по крайней мере, в Linux и Mac):Дополнение (см. Второй комментарий VonC): в Windows имя файла
%HOME%\_netrc
.Также прочитайте первый комментарий VonC на случай, если вы хотите зашифровать.
Еще одно дополнение (см. Комментарий user137717), которое вы можете использовать, если у вас Git 1.7.10 или новее. .
Кэшируйте ваш пароль GitHub в Git с помощью помощника по учетным данным :
Это также работает на Linux, Mac и Windows.
источник
%HOME%\_netrc
(вместо~/.netrc
). См. Также stackoverflow.com/a/18362082/6309 для шифрования этого файла.Для непосвященных, которых смущают предыдущие ответы, вы можете сделать:
Который ответит что-то вроде
Затем вы можете запустить команду, которую предложили многие другие, но теперь вы знаете свое имя и ваш репо сверху, так что вы можете просто вырезать и вставить
yourname/yourrepo.git
из вышеперечисленного в:источник
paraphrase
каждый раз. Я не настроил одинyourrepo
?git remote -v
и посмотри, что выйдетЕсли вы используете SSH и секретный ключ шифруется с помощью ключевой фразы, то вам все равно будет предложено ввести парольную фразу / пароль для закрытого ключа , когда вы делаете сетевые операции с Git , как
push
,pull
иfetch
.Используйте ssh-agent для сохранения пароля-пароля / пароля
Если вы хотите избежать необходимости вводить парольную фразу каждый раз, вы можете использовать ее
ssh-agent
для хранения учетных данных парольной фразы личного ключа один раз за сеанс терминала, как я объясняю в своем ответе на Не удалось открыть соединение с вашим агентом аутентификации :В Windows msysgit Bash вам нужно оценить вывод
ssh-agent
, но я не уверен, нужно ли вам делать то же самое в других средах разработки и операционных системах.ssh-add
ищет закрытый ключ в вашей домашней.ssh
папке с именемid_rsa
, который называется по умолчанию, но вы можете передать путь к файлу ключу с другим именем.Убить агента
Когда вы закончите сеанс терминала, вы можете завершить работу
ssh-agent
с флагом kill-k
:Как объяснено в
ssh-agent
руководстве :Дополнительный тайм-аут
Кроме того, он может принимать необязательный параметр времени ожидания, например, так:
где
<timeout>
имеет формат<n>h
для<n>
часов, в<n>m
течение<n>
минут, и так далее.Согласно
ssh-agent
инструкции :Смотрите эту страницу для большего количества форматов времени .
Предупреждение о безопасности для пользователей Cygwin
Пользователи Cygwin должны знать о потенциальной угрозе безопасности при использовании ssh-agent в Cygwin :
И по приведенной ссылке :
источник
Источник: Настройка Git
Следующая команда сохранит ваш пароль в памяти на некоторое время (для Git 1.7.10 или новее).
источник
Когда вы используете https для Git pull & push, просто настраивайте
remote.origin.url
свой проект, чтобы избежать ввода имени пользователя (или / и пароля) при каждом нажатии.Как настроить
remote.origin.url
:@Update - использование
ssh
Я думаю, что использование
ssh
протокола - лучшее решение, чемhttps
, хотя шаг настройки немного сложнее.Грубые шаги:
ssh-keygen
в Linux, в Windowsmsysgit
предоставьте аналогичные команды.~/.ssh
. И добавьте его в агент ssh с помощьюssh-add
команды.remote.origin.url
репозитория Git наssh
стиль, например,git@gitlab.com:myaccount/myrepo.git
Советы:
@Update - Переключение между
https
иssh
протоколом.Достаточно простого изменения
remote.origin.url
, или вы можете редактироватьrepo_home/.git/config
напрямую, чтобы изменить значение (например, используяvi
в Linux).Обычно я добавляю строку для каждого протокола и закомментирую один из них, используя
#
.Например
источник
git-fetch(1)
упоминается, что только дляgit
/ssh
-основных URL-адресов.https://username:password@github.com/
безопасности. См stackoverflow.com/questions/4980912/...Вы можете кэшировать свой пароль GitHub в Git:
Просто следуйте инструкциям из официальной документации GitHub .
Следуя инструкциям, приведенным в приведенной выше ссылке, вы сможете загружать / извлекать данные из своего хранилища, не вводя имя пользователя и пароль каждый раз.
источник
Вот еще один вариант:
Вместо того чтобы писать
Вы могли бы написать:
Очевидно, что для большинства оболочек это приведет к кэшированию пароля в истории, поэтому имейте это в виду.
источник
То, что работало для меня, было редактировать
.git/config
и использоватьСамо собой разумеется, что это небезопасный способ хранения вашего пароля, но есть среды / случаи, когда это не может быть проблемой.
источник
Если ключ или
.netrc
файл SSH не работает для вас, то другое простое, но менее безопасное решение, которое может работать для вас, - это git-credential-store - Помощник для хранения учетных данных на диске:По умолчанию учетные данные будут сохранены в файл
~/.git-credentials
. Он будет создан и записан.Обратите внимание, что использование этого помощника будет хранить ваши пароли в незашифрованном виде на диске, защищенные только разрешениями файловой системы. Если это не может быть приемлемым обменом безопасности.
источник
Я была такая же проблема.
Итак, я изменил
.git/config
файл из своего проекта,в
и добавил открытый ключ SSH в профиль Git, который находится в настройке.
Для открытого ключа SSH:
источник
cat ~/.ssh/id_rsa.pub
помощью ключа rsa и вставьте его в настройки веб-портала git.Обновление для HTTPS:
GitHub запустил новую программу для Windows, которая хранит ваши учетные данные при использовании HTTPS:
Использовать:
Скачать программу отсюда
Как только вы запустите программу, она отредактирует ваш
.gitconfig
файл. Еще раз проверьте, правильно ли он отредактировал,.gitconfig
если у вас есть несколько из них. Если он не редактировал правильный, добавьте следующее к вашему.gitconfig
ПРИМЕЧАНИЕ разрыв строки после
[credential]
. Требуется.Откройте клиент командной строки и попробуйте
git push origin master
один раз. Если он запрашивает у вас пароль, введите его и все. Пароль сохранен!источник
Для пользователей Windows Git, после запуска
git config --global credential.helper store
, если он по-прежнему запрашивает пароль, лучше проверить, куда записывается файл конфигурации, используя эту командуВ моем случае после ручного редактирования файла конфигурации 'C: \ Program Files \ Git \ mingw64 \ etc \ gitconfig' и добавления следующего текста все заработало.
источник
У вас в основном есть два варианта.
Если вы используете одного и того же пользователя на обеих машинах, вам нужно скопировать ключ .pub на ваш ПК, чтобы GitHub знал, что вы один и тот же пользователь.
Если вы создали новый файл .pub для своего ПК и хотите относиться к машинам как к другим пользователям, вам необходимо зарегистрировать новый файл .pub на веб-сайте GitHub.
Если это все еще не работает, это может быть потому, что ssh не настроен правильно и ssh не может найти расположение ваших ключей. Пытаться
Чтобы получить больше информации, почему SSH не работает.
источник
Обновите файл конфигурации Git напрямую ( если вы не хотите запоминать необычные команды ):
Откройте ваш
.git/config
файл в вашем любимом текстовом редакторе. Он будет в папке, которую вы клонировали, или в репозитории, в котором вы выполнилиgit init
. Перейдите в этот репозиторий..git
является скрытой папкой, и нажатие Ctrl+ Hдолжно показать скрытую папку (ls -a
в терминале).Ниже приведен пример
.git/config
файла. Скопируйте и вставьте эти строки и обязательно обновите эти строки своей информацией Git.Измените часть URL со следующим форматом для SSH:
( Вышеприведенные форматы не меняются на различных удаленных серверах Git, таких как GitHub или Bitbucket. То же самое, если вы используете Git для контроля версий ):
Примечание: способ подключения SSH к удаленному репозиторию Git потребует добавления вашего открытого ключа SSH на удаленный сервер Git ( например, GitHub или Bitbucket. Найдите на странице настроек ключи SSH ).
Чтобы узнать, как генерировать ключи SSH, обратитесь к разделу : Создание ключей SSH.
источник
Вот что сработало для меня:
Пример:
источник
Вам нужно выполнить два шага -
git remote remove origin
git remote add origin git@github.com:NuggetAI/nugget.git
Обратите внимание, что URL Git является URL-адресом SSH, а не URL-адресом HTTPS ... Который вы можете выбрать здесь:
источник
Если вы клонировали HTTPS вместо SSH и столкнулись с проблемой с запросом имени пользователя и пароля при извлечении, отправке и извлечении. Вы можете решить эту проблему просто для UBUNTU
Шаг 1: перейти в корневой каталог
создать файл .git-credentials
Добавить этот контент в этот файл с вами
usename
password
иgithosting URL
Затем выполните команду
Теперь вы сможете без проблем извлекать и извлекать все детали из вашего репо.
источник
Если вы используете Git (например, Git Bash) под Windows (и если вы не хотите переключаться с HTTPS на SSH), вы также можете использовать Git Credential Manager для Windows
Это приложение будет хранить имя пользователя и пароль для вас ...
источник
Как говорили многие пользователи, вам просто нужно изменить URL-адрес хранилища Git с HTTPS на SSH.
Если вы не сгенерировали SSH-ключ на своем компьютере, вам придется это сделать.
Так же, как дополнительная информация, после этого изменения я все еще получал ту же ошибку:
В моем случае проблема заключалась в том, что я использовал оболочку Windows для выполнения команды ngh; так как эта команда должна открыть приглашение для запроса фразы SSH, а оболочка Windows не открывает такие запросы, проверка подлинности просто не удалась.
Итак, мне просто нужно было открыть оболочку Git и выполнить там команду ngh, вставлять фразу SSH в запрос каждый раз, когда он ее запрашивал, и «вуаля» ... Это просто отлично работало!
источник
источник
Если у вас включен 2FA аккаунт 2FA в вашей учетной записи Github, ваш обычный пароль не будет работать для этой цели, но вы можете сгенерировать токен личного доступа и использовать его вместо него.
Посетите страницу
Settings
->Developer Settings
->Personal Access Tokens
в GitHub ( https://github.com/settings/tokens/new ) и создайте новый токен со всеми разрешениями репо :На странице отобразится новое значение токена. Сохраните это значение и используйте его вместо пароля при отправке в ваш репозиторий на GitHub:
источник