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

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

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

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

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

921
задан TooCooL 03 июля '11 в 23:25
источник поделиться
14 ответов

Общей ошибкой является клонирование с использованием стандартного (HTTPS), а не SSH. Вы можете исправить это, перейдя в ваш репозиторий, нажав кнопку ssh слева до поля URL-адреса и обновив URL-адрес удаленного источника, например:

git remote set-url origin git@github.com:username/repo.git
1410
ответ дан Tekkub 04 июля '11 в 0:25
источник поделиться

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

ssh://git@github.com/username/repo.git

И не это:

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

Теперь вы можете проверить только SSH Key вместо username и password.

99
ответ дан Anton Salikhmetov 14 июня '12 в 10:19
источник поделиться

Помимо перехода на 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, вы можете использовать credential helper, чтобы сообщить git запомнить ваше имя пользователя GitHub и пароль каждый раз, когда он разговаривает с GitHub.

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

97
ответ дан rintcius 19 янв. '13 в 22:08
источник поделиться

Постоянная аутентификация с репозиториями 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>

Использование также должно указывать кеширование expire,

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

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

91
ответ дан S͢ky D͢ream 17 февр. '15 в 16:30
источник поделиться

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

git remote -v

который будет отвечать на что-то вроде

origin  https://yourname@github.com/yourname/yourrepo.git (fetch)
origin  https://yourname@github.com/yourname/yourrepo.git (push)

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

git remote set-url origin git@github.com:yourname/yourrepo.git
60
ответ дан Davide 13 февр. '14 в 20:22
источник поделиться

Если вы используете 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 с флагом kill -k:

$ ssh-agent -k

Как объяснено в ssh-agent manual:

-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-агента под cygwin [1], хотя и под местной netstat и remote portscan не отображается, что порт, указанный в /tmp/ssh -foo доступен для всех...?

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

И на ссылка ссылка:

однако обратите внимание, что сокеты домена cygwin unix FUNDAMENTALLY INSECURE, и поэтому я сильно DISCOURAGE использует 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 kernel проверяет разрешения, когда программа пытается получить доступ к сокету AF_UNIX. Для Сокеты AF_INET, однако, соединения анонимны (читайте "Небезопасные" ). Представьте, что у вас запущен cygwin ssh-agent. злоумышленник может отобразить ваш блок, найти открытый порт, используемый ssh-agent, открыть соединение с вашим ssh-сервером, получить вызов RSA от него, отправить его вашему ssh-агенту через открытый порт, который он нашел, получить RSA ответ, отправьте его на сервер ssh и voila, он успешно выполнил вход в систему на ваш сервер, как вы.

41
ответ дан user456814 21 авг. '13 в 5:54
источник поделиться

Источник: Настройка 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)
32
ответ дан Sagar Rakshe 01 сент. '13 в 5:55
источник поделиться

Когда вы используете https для git pull и push, просто config 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 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-ключи, используя команду, например ssh-keygen в linux, в windows msysgit предоставите похожие команды.
  • Храните закрытый ключ на локальном компьютере в правильном месте, например ~/.ssh. И добавьте его в ssh-агент через команду ssh-add.
  • Загрузите открытый ключ на сервер git.
  • Измените remote.origin.url репозитория git на стиль ssh, например git@gitlab.com:myaccount/myrepo.git
  • Затем, когда вы тянете или нажимаете, вам не нужно вводить имя пользователя или пароль.

Советы:

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

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

Просто изменить remote.origin.url будет достаточно или вы можете напрямую отредактировать repo_home/.git/config, чтобы изменить значение (например, используя 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/*
23
ответ дан Eric Wang 25 дек. '13 в 18:42
источник поделиться

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

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

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

14
ответ дан K M Rakibul Islam 19 дек. '14 в 8:29
источник поделиться

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

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

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

4
ответ дан WoJ 31 июля '16 в 21:25
источник поделиться

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

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

Для использования:

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

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

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

Обратите внимание на размыкание строки после [credential]. Это необходимо.

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

3
ответ дан Varun Achar 05 апр. '13 в 9:02
источник поделиться

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

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

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

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

ssh -vv username@github.com

Чтобы получить дополнительную информацию, почему SSH не работает.

3
ответ дан ralphtheninja 04 июля '11 в 0:32
источник поделиться

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

поэтому измените файл .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
2
ответ дан shrikant 09 июня '15 в 8:42
источник поделиться

Если вы используете git (например, git bash) под Windows (и если вы не хотите переключаться с https на ssh)

вы также можете использовать http://gitcredentialstore.codeplex.com/

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

0
ответ дан boly38 11 июня '14 в 16:08
источник поделиться

Другие вопросы по меткам