Git push требует имя пользователя и пароль
я клонировал репозиторий git с моей учетной записи Github на свой компьютер.
Я хочу работать как с ПК, так и с ноутбуком, но с одной учетной записью Github.
когда я пытаюсь нажать или вытащить из Github с помощью моего ПК, для этого требуется имя пользователя и пароль, но не при использовании ноутбука!
Я не хочу вводить свое имя пользователя и пароль каждый раз, когда я взаимодействую с origin. Чего мне здесь не хватает?
19 ответов
распространенной ошибкой является клонирование по умолчанию (HTTPS) вместо SSH. Вы можете исправить это, перейдя в свой репозиторий, нажав "клонировать или загружать", затем нажав кнопку" использовать SSH " над полем URL и обновив URL-адрес вашего origin remote следующим образом:
git remote set-url origin git@github.com: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://USERNAME@github.com': <PASSWORD>
использовать также следует указать кэширование истекает,
git config --global credential.helper 'cache --timeout 7200'
после включения кэширования учетных данных, он будет кэшироваться для 7200 секунд (2 часа).
Я только что столкнулся с той же проблемой, и самым простым решением, которое я нашел, было использовать SSH URL вместо HTTPS:
ssh://git@github.com/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 в случае, если вы хотите зашифровать.
еще одно дополнение (см. user137717 комментарии), которые вы можете использовать, если у вас есть git 1.7.10 или новее.
кэшировать пароль github в git с помощью помощника учетных данных :
Если вы клонируете репозитории GitHub с помощью HTTPS, вы можете использовать Credential helper, чтобы сказать Git запомнить ваше имя пользователя GitHub и пароль каждый раз, когда он разговаривает с GitHub.
Это также работает на Linux, Mac и Windows.
для непосвященных, которые смущены предыдущими ответами, вы можете сделать:
git remote -v
, который ответит что-то вроде
origin https://yourname@github.com/yourname/yourrepo.git (fetch)
origin https://yourname@github.com/yourname/yourrepo.git (push)
тогда вы можете запустить команду многие другие предложили, но теперь вы знаете yourname и yourrepo сверху, так что вы можете просто вырезать и вставить yourname/yourrepo.git
сверху в
git remote set-url origin git@github.com:yourname/yourrepo.git
если вы используете ssh, а ваш закрытый ключ зашифрован парольной фразой, то вам все равно будет предложено ввести парольную фразу / пароль для закрытого ключа при выполнении сетевых операций с Git как push
, pull
и fetch
.
используйте ssh-agent для сохранения пароля секретного ключа / пароля
если вы хотите избежать необходимости вводить пароль каждый раз, вы можете использовать ssh-agent
для хранения закрытого ключа учетные данные парольной фразы один раз за сеанс терминала, как я объясняю в мой ответ не смог открыть соединение с вашим агентом аутентификации:
$ eval `ssh-agent -s`
$ ssh-add
в Windows msysgit Bash вам нужно оценить выход ssh-agent
, но я не уверен, что вам нужно делать то же самое в других средах разработки и операционных системах.
ssh-add
ищет закрытый ключ в вашем доме под названием id_rsa
, который является именем по умолчанию, но вы можете пройти путь к ключу с другим именем.
убить агент
когда вы закончите с вашей терминальной сессии, вы можете shutdown 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) переопределяет это значение. Без этот параметр максимальное время жизни по умолчанию-forever.
см. эту страницу для больше форматов времени.
предупреждение безопасности для пользователей Cygwin
пользователи Cygwin должны знать о потенциальный риск безопасности с использованием ssh-агента в Cygwin:
люди должны знать возможная опасность ssh-агента под cygwin [1], хотя и под локальным netstat и удаленный portscan не отображается, что порт, указанный в /tmp /ssh-foo доступен для всех...?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html
однако обратите внимание, что сокеты домена unix cygwin являются принципиально Небезопасно и поэтому я сильно отбить использование ssh-агента под с Cygwin.
когда вы запускаете ssh-agent под 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://eric@github.com/eric/myproject
@Update-использование ssh
я думаю, что с помощью ssh
протокол является лучшим решением, чем https
, хотя шаг настройки немного сложнее.
грубой шаги:
- создать ssh ключи с помощью команды, e.g
ssh-keygen
на linux, на windowsmsysgit
предоставить аналогичные команды. - держите закрытый ключ на локальной машине в правильном месте, e.g
~/.ssh
. И добавьте его в ssh agent через . - загрузите открытый ключ на сервер git.
- изменить
remote.origin.url
из репозитория git вssh
стиль, электронная.гgit@gitlab.com:myaccount/myrepo.git
- потом, когда тянуть или толкать, нет необходимости вводить имя пользователя или пароль когда-либо.
советы:
- если ваш ключ ssh имеет парольную фразу, то вам нужно ввести ее при первом использовании ключа после каждого перезапуска вашего компьютера, по умолчанию.
@Update-переключение между https
и ssh
протокол.
просто изменить remote.origin.url
будет достаточно, или вы можете редактировать repo_home/.git/config
напрямую изменить значение (например.G помощью vi
на linux).
обычно я добавляю строку для каждого протокола и прокомментируйте один из них, используя #
.
Эл.г
[remote "origin"] url = git@gitlab.com:myaccount/myrepo.git # url = https://myaccount@gitlab.com/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 знает, что вы тот же пользователь.
Если вы создали новый .pub файл для вашего ПК и хотите рассматривать машины как разных пользователей, вам нужно зарегистрировать новый .файл pub на веб-сайте github.
Если это все еще не работает, это может быть потому, что ssh не настроен правильно и что ssh не может найти расположение ваших ключей. Попробуй!--2-->
ssh -vv username@github.com
чтобы получить больше информации, почему SSH терпит неудачу.
вот еще вариант:
вместо того, чтобы писать
git push origin HEAD
вы могли бы написать:
git push https://user:pass@yourrepo.com/path HEAD
очевидно, что с большинством оболочек это приведет к кэшированию пароля в истории, поэтому имейте это в виду.
у меня была такая же проблема.
так изменить .файл git/config из моего проекта
url = https://github.com/<your-user-here>/<your-repo-here>
to
url = git@github.com:<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
Как многие пользователи уже сказал, Вы просто должны изменить свой repositorie в Git URL-адрес с HTTPS и SSH.
Если вы не создали SSH-ключ в своей машине, то вам придется это сделать.
как дополнительная информация, после этого изменения я все еще получал ту же ошибку: разрешение отказано.
в моем случае проблема заключалась в том, что я использовал оболочку Windows для выполнения команды ngh; так как эта команда должна открыть приглашение запросите фразу SSH, и оболочка Windows не откроет такого рода приглашения, аутентификация просто не удалась.
Итак, мне просто нужно было открыть оболочку git и выполнить команду ngh там, поместить фразу SSH в подсказку каждый раз, когда она просила об этом и "вуаля"... Это просто отлично сработало!
Если ключ ssh или .netrc не работал для вас, тогда другое простое, но менее безопасное решение, которое может работать для вас, - это git-credential-store - Helper для хранения учетных данных на диске
git config --global credential.helper store
по умолчанию учетные данные будут сохранены в ~/.git-credentials
. Он будет создан и записан.
обратите внимание, что этот помощник будет хранить ваши пароли незашифрованными на диске, защищенные только разрешениями файловой системы. Если это не может быть приемлемым безопасности компромисс.
необходимо выполнить 2 шага -
1) git remote remove origin
2) git remote add origin git@github.com:NuggetAI/nugget.git
обратите внимание, что url Git-это ssh
url, а не url https .. Которые можно выбрать отсюда.
Если вы используете git (ex. Git bash) под Windows (и если вы не хотите переключаться с https на ssh)
вы также можете использовать https://github.com/Microsoft/Git-Credential-Manager-for-Windows
Это приложение будет сохранить имя пользователя и пароль для вас...