Git push требует имя пользователя и пароль
я клонировал репозиторий git из моей учетной записи Github на свой компьютер.
Я хочу работать как с моим ПК, так и с ноутбуком, но с одной учетной записью Github.
когда я пытаюсь нажать или вытащить из Github с помощью моего ПК, он требует имя пользователя и пароль, но не при использовании ноутбука!
Я не хочу вводить свое имя пользователя и пароль каждый раз, когда я взаимодействую с origin.
Чего мне здесь не хватает?
19 ответов:
распространенной ошибкой является клонирование с использованием по умолчанию (HTTPS) вместо SSH. Вы можете исправить это, перейдя в свой репозиторий, нажав "клонировать или загрузить", затем нажав кнопку "использовать SSH" над полем URL и обновив URL вашего исходного пульта дистанционного управления следующим образом:
git remote set-url origin [email protected]:username/repo.gitэто задокументировано на GitHub:переключение удаленных URL-адресов с HTTPS на SSH.
постоянная аутентификация с помощью репозиториев Git,
выполнить следующую команду, чтобы включить кэширование учетных данных:
$ git config credential.helper store $ git push https://github.com/repo.git Username for 'https://github.com': <USERNAME> Password for 'https://[email protected]': <PASSWORD>
использовать также следует указать срок действия кэширования истекает,
git config --global credential.helper 'cache --timeout 7200'после включения кэширования учетных данных, он будет кэшироваться для 7200 секунд (2 часа).
Я просто столкнулся с той же проблемой, и самым простым решением, которое я нашел, было использовать SSH URL вместо HTTPS one:
ssh://[email protected]/username/repo.gitа не так:
https://github.com/username/repo.gitтеперь вы можете проверить с просто the
SSH Keyвместоusernameиpassword.
помимо перехода на SSH вы также можете продолжать использовать HTTPS, если вы не возражаете, чтобы ваш пароль был в открытом тексте. Положите это в ваш
~/.netrcи он не будет запрашивать ваше имя пользователя / пароль (по крайней мере, на Linux и Mac):machine github.com login <user> password <password>дополнение (см. 2-й комментарий VonC): в Windows имя файла
%HOME%\_netrc.также прочитайте первый комментарий VonC в случае, если вы хотите зашифровать.
еще одно дополнение (см. комментарий пользователя 137717) который вы можете использовать, если у вас есть git 1.7.10 или новее.
кэшируйте свой пароль github в git с помощью помощника учетных данных:
Если вы клонируете репозитории GitHub с помощью HTTPS, вы можете использовать Credential helper, чтобы сказать Git, чтобы помнить ваше имя пользователя GitHub и пароль каждый раз, когда он разговаривает с GitHub.
Это также работает на Linux, Mac и Windows.
для непосвященных, которых смущают предыдущие ответы, вы можете сделать:
git remote -v, который ответит что-то вроде
origin https://[email protected]/yourname/yourrepo.git (fetch) origin https://[email protected]/yourname/yourrepo.git (push)затем вы можете запустить команду многие другие предложили, но теперь вы знаете yourname и yourrepo сверху, так что вы можете просто вырезать и вставить
yourname/yourrepo.gitсверху вgit remote set-url origin [email protected]:yourname/yourrepo.git
если вы используете ssh и ваш закрытый ключ зашифрован с помощью парольной фразы, то вам все равно будет предложено ввести парольную фразу/пароль для закрытого ключа при выполнении сетевых операций с Git как
push,pullиfetch.используйте ssh-агент для сохранения пароля/пароля секретного ключа
если вы хотите избежать необходимости вводить пароль каждый раз, вы можете использовать
ssh-agentдля хранения вашего закрытого ключа пароль учетные данные один раз за сеанс терминала, как я объясняю в мой ответ не смог открыть соединение с вашим агентом аутентификации:$ eval `ssh-agent -s` $ ssh-addв Windows msysgit Bash, вам нужно оценить выход
ssh-agent, но я не уверен, что вам нужно делать то же самое в других средах разработки и операционных системах.
ssh-addищет закрытый ключ в вашем доме под названием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руководство:-t lifeустановить значение по умолчанию для максимального срока службы тож добавил к агенту. Продолжительность жизни может быть определена в секундах или в a формат времени, указанный в sshd_config (5). Продолжительность жизни указанный для идентификации с ssh-add (1) переопределяет это значение. Без этот параметр максимальное время жизни по умолчанию-навсегда.
смотрите эту страницу для получения дополнительных форматов времени.
предупреждение безопасности для пользователей Cygwin
пользователи Cygwin должны знать о потенциальная угроза безопасности при использовании ssh-агента в Cygwin:
люди должны быть осведомлены о возможная опасность ssh-агента под cygwin [1], хотя и под локальным netstat и remote portscan не похоже, что порт, указанный в /tmp /ssh-foo доступен для всех...?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.htmlоднако обратите внимание, что сокеты домена unix cygwin являются принципиально Небезопасно и так я сильно отбить охоту использование ssh-агента под с Cygwin.
когда вы запускаете ssh-агент под cygwin он создает сокет AF_UNIX в
источник: Настройка 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 1 hour (setting is in seconds)
при использовании https для git pull & push, просто config
remote.origin.urlдля вашего проекта, чтобы избежать ввода имени пользователя (и пароль) каждый раз, когда вы нажимаете.как в config
remote.origin.url:Url format: https://{username:password@}github.com/{owner}/{repo} Parameters in url: * username optional, the username to use when need 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, no need to enter password again when need authentication, tip: this value is stored as plain text, so for security concern, don't specify this param, * e.g git config remote.origin.url https://[email protected]/eric/myproject
@ Update-using
sshя думаю, что с помощью
sshпротокол является лучшим решением, чемhttps, хотя шаг установки немного сложнее.грубой шаги:
- создать ssh ключи с помощью команды, например
ssh-keygenна linux, на windowsmsysgitпредоставить аналогичные команды.- держите закрытый ключ на локальном компьютере в нужном месте, например
~/.ssh. И добавьте его в ssh агент через .- загрузите открытый ключ на сервер 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/*
вы можете кэшировать свой пароль GitHub в Git:
просто следуйте инструкциям из github в официальная документация.
после выполнения инструкций из приведенной выше ссылки, вы должны быть в состоянии нажать/тянуть в/из вашего репо без ввода имени пользователя/пароля каждый раз.
то, что работало для меня было редактировать
.git/configи использовать[remote "origin"] url = https://<login>:<password>@gitlab.com(...).gitсамо собой разумеется, что это небезопасный способ хранения пароля, но есть сред/случаях, когда это не может быть проблемой.
обновление для HTTPS:
Github запустил новую программу для Windows, которая хранит ваши учетные данные, когда вы используете HTTPS:
использование:
скачать программу здесь
после запуска программы он будет редактировать ваш . Перепроверьте, если он редактировал правильный
.gitconfigв случае, если у вас их несколько. Если он не редактировал правильный, добавьте следующее в свой.gitconfig[credential] helper = !'C:\Path\To\Your\Downloaded\File\git-credential-winstore.exe'обратите внимание на разрыв строки после
[credential]. Это необходимо.откройте клиент командной строки и попробуйте
git push origin masterраз. Если он попросит вас ввести пароль, введите его, и вы закончите. Пароль сохранен!
у вас в основном есть два варианта.
Если вы используете одного и того же пользователя на обеих машинах, вам нужно скопировать .паб ключ к компьютеру, так что github знает, что вы тот же пользователь.
Если вы создали новый .паб файл для вашего ПК и хотите рассматривать машины как разные пользователи, вам нужно зарегистрировать новый .файл паба на веб-сайте github.
Если это все еще не работает, это может быть связано с тем, что ssh настроен неправильно и что ssh не может найти расположение ваших ключей. Попробуй
ssh -vv [email protected]чтобы получить дополнительную информацию о причинах сбоя SSH.
вот еще вариант:
вместо того, чтобы писать
git push origin HEADвы могли бы написать:
git push https://user:[email protected]/path HEADочевидно, что с большинством оболочек это приведет к тому, что пароль будет кэшироваться в истории, поэтому имейте это в виду.
у меня была такая же проблема.
так изменить .git / config файл из моего проекта
url = https://github.com/<your-user-here>/<your-repo-here>до
url = [email protected]:<your-user-here>/<your-repo-here>и добавьте открытый ключ ssh в профиль git, который находится в настройке.
для открытого ключа ssh
cat ~/.ssh/id_rsa.pub
для пользователей windows git, после запуска
git config --global credential.helper store, если он все еще запрашивает пароль, вам лучше проверить, где записана конфигурация. с помощью этой команды
git config --list --show-originв моем случае, вручную редактировать конфигурационный файл 'C:\Program Files\Git\mingw64\etc\gitconfig', добавив следующий текст, он работает.
[credential] helper = store
Как сказали многие пользователи, вам просто нужно изменить URL-адрес репозитория git с https на SSH.
Если вы еще не создали SSH-ключ в своей машине, то вам придется это сделать.
Так же, как дополнительная информация, после этого изменения я все еще получал ту же ошибку: отказано в разрешении.
в моем случае проблема заключалась в том, что я использовал оболочку Windows для выполнения команды ngh; поскольку эта команда должна открыть приглашение запросите фразу SSH, и оболочка Windows не откроет такие приглашения, аутентификация просто не удалась.
Итак, мне просто нужно было открыть оболочку git и выполнить команду ngh там, поместить фразу SSH в приглашение каждый раз, когда она запрашивала ее и "вуаля"... Он просто отлично работал!
Если ключ ssh или .netrc не работает для вас, то еще одно простое, но менее безопасное решение, которое может работать для вас git-credential-store - помощник для хранения учетных данных на диске
git config --global credential.helper storeпо умолчанию учетные данные будут сохранены в
~/.git-credentials. Он будет создан и записан.обратите внимание, что с помощью этого помощника ваши пароли будут храниться в незашифрованном виде на диске, защищенном только разрешениями файловой системы. Если это не может быть приемлемой безопасностью компромисс.
вам нужно выполнить 2 действия -
1) git remote remove origin 2) git remote add origin [email protected]:NuggetAI/nugget.gitобратите внимание, что url git-это
sshurl, а не https url .. Который вы можете выбрать здесь.
Если вы используете git (ex. git bash) под окнами (и если вы не хотите переключаться с https на ssh)
вы также можете использовать https://github.com/Microsoft/Git-Credential-Manager-for-Windows
Это приложение будет сохранить имя пользователя и пароль для вас...

Comments