162

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

Я попробовал инструкции по настройке вашей электронной почты в Git, а именно, установил переменные Git github.user и github.token, но это не имело никакого значения.

Я не понимаю, почему это происходит.

12 ответов12

209

У меня была похожая проблема сегодня: я все испортил в своей рабочей копии, поэтому я решил переименовать каталог и снова клонировать свой проект из github. Но после этого мне пришлось вводить свой пароль для выполнения любого запроса на извлечение / отправку вместо того, чтобы вводить фразу-пароль только один раз, как я это делал раньше.

Это потому, что сегодня я использовал протокол https для клонирования проекта! Чтобы проверить, какой протокол вы используете, просто запустите

git config -l

и посмотрите на строку, начинающуюся с 'remote.origin.url'.

Для переключения протоколов:

git config remote.origin.url git@github.com:the_repository_username/your_project.git

the_repository_username и your_project должны быть заменены на соответствующее имя репозитория и владельца этого репозитория. Имя пользователя будет вашим, если у вас есть хранилище, или имя пользователя владельца хранилища в противном случае.

29

Вам необходимо настроить ssh-agent, для которого вам нужно пройти аутентификацию только один раз. Посмотрите этот ответ в SO для ознакомления.

29

Если вы используете HTTPS вместо SSH, вы можете выполнить следующее:

  1. Найдите свой удаленный URL (remote.origin.url) с помощью

    git config -l
    

    благодаря Серхио Морстабилини

  2. Ваш удаленный URL будет выглядеть следующим образом: https://{USERNAME} @ github.com/{USERNAME}/{REPONAME} .git

  3. Выполните эту команду:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    
26

Я предпочитаю использовать HTTPS, я считаю, что это проще и безопаснее, чем настройка ключей ssh.

Используя HTTPS, вы можете запретить git запрашивать ваше имя пользователя для пультов Github с помощью следующего:

git config --global url."https://yourusername@github.com".insteadOf "https://github.com"

И вы можете по крайней мере уменьшить частоту, с которой git запрашивает ваш пароль, с помощью:

git config --global credential.helper 'cache --timeout=28800'

Где 28800 - это 8 часов. Я использую эту настройку, чтобы ввести свой пароль только один раз, когда я начинаю свой рабочий день.

После этого у вас будут эти записи в вашем ~/.gitconfig

[url "https://yourusername@github.com"]
    insteadOf = https://github.com

[credential]
    helper = cache --timeout=28800

Источник:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/git-config

6

Если вы используете Windows по протоколу HTTPS, попробуйте Git Credential Store - он использует Windows Credential Store для хранения вашего имени и пароля.

Windows Credential Store for Git
This application is a small helper app designed to follow the 
git credentials API as defined by the Git Documentation.

Installation
1. Download the git-credential-winstore.exe application
2. Run it! If you have GIT in your PATH, it should just work.

Затем в следующий раз, когда вы введете свое имя и пароль, он запомнит их для вас.

5

Когда вы устанавливаете ключ ssh для github, если это не ваш ключ по умолчанию, вам нужно будет добавить раздел в ~/.ssh/config

Host *github.com
    User git
    IdentityFile ~/.ssh/github_id_rsa
5

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

git config remote.origin.url https://USERNAME@github.com/repo_owner/repo_name

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

Именно так я и предпочитаю, так как мне нравится, когда меня заставляют вводить свой пароль на github, прежде чем делиться с миром.

2

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

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

И я не помню, где я видел это, но когда вас спрашивают о вашем имени пользователя - вот где вы прикрепляете маркер доступа к приложению. Затем оставьте пароль пустым. Работал на моем Mac.

1

Также, если вы используете Windows, вы можете использовать:

$ git config --global credential.helper wincred

вам просто нужно войти еще раз, и тогда git запомнит.

1

использовать SSH

Чтобы запретить GitHub запрашивать пароль во время нажатия, в идеале вы должны использовать SSH (git@github.com:...) вместо HTTPS URL (https://github.com/...) и добавить свой ключ SSH к вашему GitHub аккаунт. Смотрите: какой удаленный URL я должен использовать?

GitHub - клон с SSH

помощник по учету

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

  • Mac: git config --global credential.helper osxkeychain (osxkeychain helper ),
  • Windows: git config --global credential.helper wincred
  • Linux и другие: git config --global credential.helper cache

.netrc

Другой способ - использовать настройку вашего пользователя / пароля в ~/.netrc (_netrc в Windows), например

machine github.com
login USERNAME
password PASSWORD

OAuth

Используйте OAuth-токен (персональный API-токен) для отправки изменений, например

git push https://4UTHT0KEN@github.com/foo/bar

Связанные с:

1

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

Так что я просто добавляю это в мой ".gitconfig"

[url "https://myusername@github.com"]
    insteadOf = https://github.com
0

Используйте Git Credential Manager для Windows, если вы используете Windows.

Этот проект включает в себя:

  • Безопасное хранение паролей в хранилище учетных данных Windows
  • Поддержка многофакторной аутентификации для Visual Studio Team Services
  • Поддержка двухфакторной аутентификации для GitHub
  • Поддержка создания и использования токенов личного доступа для Visual Studio Team Services и GitHub
  • Поддержка неинтерактивного режима для Visual Studio Team Services при поддержке Azure Directory
  • Проверка подлинности Kerberos для Team Foundation Server
  • Необязательные настройки для оптимизации агента сборки

Просто скачайте последнюю версию и установите ее.

Как пользоваться

Вы не Это волшебно работает, когда нужны учетные данные.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .