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

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

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

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

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

Комментарии к вопросу (8)
Решение

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

git remote set-url origin git@github.com:username/repo.git

Это документировано на GitHub: Switching remote URLs from HTTPS to SSH.

Комментарии (27)

Постоянно аутентификации с репозиториями git.

Выполните следующую команду, чтобы включить кэширование учетных данных:

$ git config credential.helper store
$ git push https://github.com/owner/repo.git

Username for 'https://github.com': 
Password for 'https://USERNAME@github.com': 

Вы должны также указать кэширование истекает,

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

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

Комментарии (2)

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

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

А не этот:

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

Теперь вы можете проверять с помощью только ключа SSH вместо имени пользователя и пароля.

Комментарии (4)

Помимо изменения для СШ вы также можете продолжать использовать протокол HTTPS, если вы не'т ум, чтобы положить пароль в виде открытого текста. Положите это в ваш~/.netrc ПО и он выиграл'т просить Ваш логин/пароль (по крайней мере на Linux и Mac):

machine github.com
       login 
       password 

Дополнение (см. VonC's во-вторых, комментарий): на Windows имя файла %дома%_netrc\.

Также читайте VonC'Первый комментарий в случае, если вы хотите зашифровать.

Еще одно дополнение (см. user137717'ы комментарий), которые вы можете использовать, если у вас есть мерзавец 1.7.10 или новее.

Кэш на GitHub пароль в Git используя удостоверение помощника:

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

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

Комментарии (12)

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

git remote -v

Что ответит что-то вроде

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

Затем можно выполнить команду многие другие предложили, но теперь вы знаете вашеимя и yourrepo сверху, так что вы можете просто вырезать и вставить вашеимя/yourrepo.ГИТ от указанных в:

git remote set-url origin git@github.com:yourname/yourrepo.git
Комментарии (4)

Если вы're через SSH и ваш закрытый ключ защищен паролем, то вы'll по-прежнему будет предложено ввести пароль/пароль для закрытого ключа, когда вы делаете сетевых операций с Git,, как толчок, тянуть, и "взять".

Использовать SSH-агента для сохранения закрытого ключа/пароля

Если вы хотите, чтобы избежать необходимости вводить ваш пароль каждый раз, вы можете использовать SSH-агента, чтобы сохранить ваш пароль для закрытого ключа учетные данные один раз в терминальной сессии, как я объясняю в разделе Мой ответ не удалось открыть подключение к аутентификации агентов:

$ eval `ssh-agent -s`
$ ssh-add

В Windows msysgit Баш, нужно оценить результат `SSH-агента, но я'м не уверен, если вы должны сделать то же самое в других средах разработки и операционных системах.

СШ-добавить ищет секретного ключа в ваш дом.папка СШназываетсяid_rsa`, который является именем по умолчанию, но вы можете пройти путь к ключу с другой фамилией.

Убивает агент

Когда вы'повторно сделали с вашей терминальной сессии, вы можете выключение SSH-агента с убейте флаг :

$ ssh-agent -k

Как объяснено в SSH-агента руководство:

-к убить текущего агента (данное SSH_AGENT_PID переменной окружения).

Таймаут

Кроме того, он может принимать необязательный параметр timeout вот так:

$ ssh-add -t 

где в <тайм-аут> в формате <п>H Для в <п> часов, <п>м в в `<п> минут, и так далее.

Согласно SSH-агента руководство:

-Т жизнь установить значение по умолчанию для максимального времени жизни личности добавил к агенту. Срок службы может быть указано в секундах или в формат времени указан в файл sshd_config(5). Указан срок для удостоверения с СШ-добавить(1) переопределяет это значение. Без этой опции по умолчанию максимальная продолжительность жизни-это навсегда.

См. эту страницу для более форматы времени.

Предупреждение безопасности под Cygwin пользователи

Пользователи с Cygwin должен быть в курсе потенциальный риск безопасности с помощью SSH-агента в Cygwin:

люди должны быть осведомлены о потенциальной опасности SSH-агента под Cygwin 1, хотя по местным netstat и дистанционного приложение не похоже, что порт, указанный в /tmp/СШ-Фу является доступной для каждого ...?

На вышеуказанной ссылке]7:

однако, обратите внимание, что с Cygwin'ы и Unix-сокетов являются FUNDAMENTALLY INSECURE и поэтому я решительно DISCOURAGE использование SSH-агента под Cygwin.

когда вы запустите SSH-агент под Cygwin того, он создает сокет в /tmp/СШ-$имя_пользователя/ каталог. Под Cygwin AF_UNIX сокетов эмулируются через сокеты равен af_inet. Вы можете легко увидеть, что если вы&#39;будете искать в каталоге/tmp/СШ-$имя пользователя/агента-гнездо-*` файл через Блокнот. Вы'll увидеть что-то вроде

!<гнездо >2080

затем выполните команду netstat-Aи сюрприз! У вас какая программа слушает порт 2080. Это&#39;ы СШ-агент. Когда СШ получает ОГА вызов от сервера, он относится к соответствующей каталоге/tmp/СШ-$имя пользователя/агента-гнездо-*(под Cygwin, в нашем случае, это означает, что он&#39;МР открыть подключение к локальнымlocalhost:2080`) и просит SSH-агента для обработки ОГА вызов с закрытым ключом, и тогда он просто передает ответ, полученный от агент SSH к серверу.

под Unix, такой сценарий работает без проблем, потому что ядра UNIX проверяет разрешения, когда программа пытается получить доступ к того гнезда. Для сокетов равен af_inet, однако, соединения анонимны (читать "и неуверенно, что"). Представьте, что у вас есть в Cygwin SSH-агента работает. Злоумышленник может приложение Ваш ящик, найдите открытый порт, используемый SSH-агента, открыть подключение к серверу SSH, получите ОГА вызов от него, отправить его на ваш SSH-агента через открытый порт он/она нашли, получите ОГА ответ, отправить его на сервер SSH и вуаля, он успешно вошел на сервер, как вы.

Комментарии (1)

Источник: Настроить 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 one hour (setting is in seconds)
Комментарии (2)

Когда вы используете https протоколу для Git тянуть & толкать, просто настроить пульт.происхождения.URL-адрес для вашего проекта, чтобы избежать ввода имени пользователя (и пароль) каждый раз, когда вы нажимаете.

Как настроить пульт.происхождения.адресу: в <предварительно> Формат URL: протокол HTTPS://{имя пользователя:пароль@}github.com/{владелец}/{РЕПО}

Параметры в URL:

  • имя пользователя <БР/> Необязательно, имя пользователя, чтобы использовать, когда это необходимо. <БР/> проверка подлинности если указан, то не нужно снова вводить имя пользователя, когда требуется проверка подлинности. Дон'т использовать электронную почту; использовать ваше имя пользователя, что нет "@" и, в противном случае url может'т быть обработано правильно,
  • пароль необязательно, пароль, чтобы использовать, когда требуется проверка подлинности. Если указано, что это'т придется вводить пароль при необходимости проверки подлинности. Совет: это значение хранится в виде обычного текста, так что по соображениям безопасности, Дон'т указать этот параметр,

е.г ГИТ конфиг удаленного.происхождения.https://eric@github.com/eric/myproject URL-адрес

</пред>


@Обновлений - используя СШ

Я думаю, что с помощью СШ протокол-это лучшее решение, чем с HTTPS, даже если шаг установки немного усложняется.

Грубые шаги:

  • Создать ключи SSH с помощью команды е.г SSH-ключей на Linux, на msysgit для Windows `` предоставляющих аналогичные команды.
  • Сохранить закрытый ключ на локальной машине в нужное место, например, ~/.СШ. И добавить его в агент SSH через СШ-добавить командная.
  • Загрузить открытый ключ на сервер git.
  • Менять пульт.происхождения.адрес репозитория Git на СШ стиль, например, git@gitlab.com:myaccount/myrepo.git
  • Потом, когда тянуть или толкать, нет'т необходимости вводить имя пользователя или пароль, либо.

Советы:

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

@Обновление - переключение между протокол HTTPS и СШ протокол.

Просто меняется удаленных.происхождения.URL-адрес будет достаточно, или вы можете редактировать repo_home/.в git/config файл напрямую изменить значение (например.G помощью ви на Linux).

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

Е. Г.

в <предварительно> [пульт и"происхождения" и] URL-адрес = git@gitlab.com:myaccount/myrepo.git

URL-адрес = https://myaccount@gitlab.com/myaccount/myrepo.git

    fetch = +refs/heads/*:refs/remotes/origin/*

</пред>

Комментарии (7)

Можно кэшировать на GitHub пароль в Git:

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

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

Комментарии (2)

Здесь'с другим вариантом:

Вместо того, чтобы писать

git push origin HEAD

Вы могли бы написать:

git push https://user:pass@yourrepo.com/path HEAD

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

Комментарии (1)

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

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

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

Комментарии (0)

В принципе, у вас есть два варианта.

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

Если вы создали новый файл .pub для своего ПК и хотите рассматривать машины как разных пользователей, вам нужно зарегистрировать новый файл .pub на сайте GitHub.

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

ssh -vv username@github.com

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

Комментарии (1)

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

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

Использовать:

  • Скачать программу с ЗДЕСЬ

  • Как только вы запустите программу, она будет редактировать .файл gitconfig хранит настройки. Проверьте, если это исправили .gitconfig хранит настройки в случае, если у вас их несколько. Если это не&#39;т изменение правильным, добавьте следующие строки в ваш.gitconfig хранит настройки`

[учетных] помощник = !'C:\Path\To\Your\Downloaded\File\git-credential-winstore.exe'

Обратите внимание на разрыв строки после [учетных]. Он требуется.

  • Откройте ваш клиент командной строки и попробовать `git толчок происхождение мастер один раз. Если он просит у вас пароль, введите его и вы'повторно через. Пароль сохранен!
Комментарии (0)

Если ключ SSH или .файл netrc по не работает для вас, то еще один простой, но менее надежное решение, которые могли бы работать на вас ГИТ-учетных-магазин - помощник для хранения учетных данных на диск:

git config --global credential.helper store

По умолчанию учетные данные будут сохранены в файле `~/.ГИТ-полномочий. Он будет создан и записан.

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

Комментарии (0)

Для пользователей Git для Windows, после команды `git файл config --глобальные учетные данные.помощник магазин, если он все равно запрашивает пароль, вы'd лучше проверить где файл конфигурации записывается, используя эту команду

git config --list --show-origin

В моем случае, после настройки вручную редактировать файл 'C:\Program файлы\ГИТ mingw64\и т. д.\gitconfig хранит настройки', и добавляете следующий текст, это сработало.

[credential]
    helper = store
Комментарии (0)

У меня был тот же вопрос.

Так что я изменил `.файл git/config файл из моего проекта,

url = https://github.com//

для

url = git@github.com:/

и добавил публичный ключ SSH для профиля ГИТ, которая в обстановке.

На открытый ключ SSH:

cat ~/.ssh/id_rsa.pub
Комментарии (1)

Вам нужно выполнить два шага -

  1. git удаленного удаления происхождения
  2. в Git дистанционного добавить git@github.com:NuggetAI/nugget.git происхождения

Обратите внимание на URL-адрес по SSH Git-это URL-адрес, а не URL-адрес https... которые вы можете выбрать здесь:

Комментарии (0)

Обновление конфигурации файл git напрямую (если вы не хотите запоминать необычные команды):

Открыть свой .файл git/config файл в вашем любимом текстовом редакторе. Он будет в папку, которую вы клонировали или в репозитории, выполненные инициализации ГИТ в. Заходим в этот репозиторий..ГИТ-это скрытая папка, и нажав <и>сочетание клавиш Ctrl</роз> + <и>ч</роз> должна показывать скрытые папки (командыls -a в терминале).

Ниже приведен пример .файл git/config файл. Скопировать и вставить эти строки, и обязательно обновить эти строки с вашими данными ЖКТ.

[user]
        name = Tux
        email = tux@gmail.com
        username = happy_feet

[remote "origin"]
        url = https://github.com/happy_feet/my_code.git
        fetch = +refs/heads/*:refs/remotes/origin/*

Изменить часть URL в следующем формате для СШ:

url = git@github.com:happy_feet/my_code.git

(Указанные выше форматы не меняются с различных удаленных серверах ЖКТ, как GitHub или Bitbucket. Это'е: если вы используете Git для контроля версий):

Примечание: для SSH-подключения к удаленным git-репозиторием потребует от вас, чтобы добавить свой публичный ключ SSH к удаленному git-сервер (как GitHub или Bitbucket. Поиск на странице настроек для ключей SSH).

Чтобы знать, как генерировать ваши ключи SSH, см: Создать ключи SSH

Комментарии (0)

Это то, что работал для меня:

git remote set-url origin https://username@github.com/username/reponame.git

Пример:

git remote set-url origin https://jsmith@github.com/jsmith/master.git
Комментарии (0)

Если вы используете Git (например, git Баш) под Windows (и если вы Don'т хотим, чтобы переключиться с HTTPS и SSH), вы также можете использовать диспетчер учетных данных в Git для Windows

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

Комментарии (1)