Я уже некоторое время пользуюсь Git, но постоянные запросы на ввод пароля приводят меня в движение.
Я использую Mac OS X и GitHub, и я настроил Git и мои SSH-ключи в соответствии с инструкциями на странице GitHub Set Up Git .
Я также добавил ключ github SSH в свою цепочку ключей Mac OS X, как упоминалось на странице парольных фраз ключа GitHub . Мой открытый ключ зарегистрирован в Git.
Тем не менее, каждый раз, когда я пытаюсь Git pull, мне приходится вводить свое имя пользователя и пароль. Есть ли что-то кроме ключа SSH, который мне нужно настроить для этого?
netrc
'. Смотрите полный пример здесь .Ответы:
Я думаю, что у вас неправильный URL Git-репозитория.
Откройте
.git/config
и найдите раздел [remote "origin"]. Убедитесь, что вы используете SSH:Вы можете увидеть SSH URL на главной странице вашего репозитория, если вы нажмете Clone или загрузите и выберите ssh .
И НЕ тот
https
илиgit
один:Теперь вы можете проверить с помощью только ключа SSH вместо имени пользователя и пароля.
Если Git жалуется
'origin' has already been added
, откройте.config
файл и отредактируйтеurl = "..."
часть после того,[remote origin]
какurl = ssh://github/username/repo.git
То же самое касается других услуг. Убедитесь, что адрес выглядит так:
protocol://something@url
Например,
.git/config
для Azure DevOps:источник
[remote "origin"]
разделе seturl = ssh://git@github.com/username/Repo.git
. Это сработало для меня.url = git@github.com:organization/Repo.git
сработало. +1 за то, что вывели меня на правильный путь! Успех!Настройка credential.helper
На OS X (теперь macOS), запустите это в Терминале :
Это позволяет Git использовать файл Keychain.app для хранения имени пользователя и пароля, а также для получения ключевой фразы для вашего личного ключа SSH из цепочки для ключей.
Для Windows используйте:
Поиск проблемы
Если помощник по учетным данным Git настроен правильно, macOS сохраняет фразу-пароль в цепочке для ключей. Иногда связь между SSH и парольными фразами, хранящимися в цепочке для ключей, может разорваться. Запустите
ssh-add -K
или,ssh-add ~/.ssh/id_rsa
чтобы снова добавить ключ в связку ключей.macOS v10.12 (Sierra) меняется на SSH
Для macOS v10.12 (Sierra)
ssh-add -K
необходимо запускать после каждой перезагрузки. Чтобы избежать этого, создавайте~/.ssh/config
с этим контентом.Со
ssh_config
man
страницы 10.12.2:Apple добавила Technote 2449, который объясняет, что произошло.
источник
.netrc
метод file, который помещает ваш пароль в открытый текст.'credential-osxkeychain' is not a git command.
поскольку у меня не было установленного помощника по учетным данным. Я следовал инструкциям здесь, чтобы установить его: help.github.com/articles/set-up-git#password-cachinggit config --global credential.helper osxkeychain
файл конфигурации в мой.ssh
каталог, исправил меня.Это случилось со мной, когда я обновил MacOS до версии 10.12 (Sierra). Похоже, агент SSH был очищен при обновлении.
Просто бег
ssh-add
обнаружил мою существующую личность. Я ввел пароль, и было хорошо, чтобы пойти снова.источник
Используйте это: замените github.com на соответствующее имя хоста
источник
git remote -v
. Тем не менее, мне все еще предлагают пароль.git@**
не запрашивает учетные данные, а URL сhttps@**
делает :). Таким образом я нашел этот документ .Как уже говорили другие, вы можете установить помощник кеша паролей. Я просто хотел опубликовать ссылку для других платформ, а не только для Mac. Я использую сервер Linux, и это было полезно: кэширование вашего пароля GitHub в Git
Для Mac:
Окна:
Linux:
источник
Также ищите, кто спрашивает вас о парольной фразе. Это Git или ваш агент SSH?
В моем случае каждый раз, когда я делал
git pull
это, он спрашивал меня:Enter passphrase for key '/work/username/.ssh/id_rsa':
Итак, я предположил, что это Git просит пароль. Поэтому я продолжал искать решения, но потом понял, что мой агент SSH отключился. Который может быть исправлен с помощью
eval $(ssh-agent)
иssh-add
как указано здесь.Также ниже приведен небольшой фрагмент, который вы можете добавить в свой
~/.bashrc
файл (или эквивалентный), чтобы убедиться, что ваш агент SSH запущен при входе в систему.В любом случае, это была довольно глупая ошибка, которую я совершил, но разместил ее здесь, на всякий случай, если это поможет кому-то сэкономить время от лая неправильного дерева, как я.
источник
SSH_ENV="$HOME/.ssh/environment"
Примечание. Хотя это удобно, Git будет хранить ваши учетные данные в виде открытого текста в локальном файле (.git-credentials) в каталоге вашего проекта (см. Ниже каталог «home»). Если вам это не нравится, удалите этот файл и переключитесь на использование опции кеша.
Если вы хотите, чтобы Git продолжал запрашивать учетные данные каждый раз, когда ему нужно подключиться к удаленному репозиторию, вы можете запустить эту команду:
Чтобы хранить пароли в .git-credentials в вашем каталоге% HOME%, а не в каталоге проекта: используйте флаг --global
источник
Руководство по Git в Windows и GitHub с использованием SSH для push / pull: Иллюстрированное руководство по Git в Windows
источник
В Windows для Git 1.7.9+ выполните следующую команду в командной строке, чтобы открыть файл конфигурации в текстовом редакторе:
Затем в файле добавьте следующий блок, если его нет, или измените его соответствующим образом:
Сохраните и закройте файл. Вам нужно будет предоставить учетные данные только один раз после вышеуказанного изменения.
источник
Используйте следующую команду, чтобы увеличить время ожидания, чтобы вы могли ввести пароль еще раз
Я использовал его для Bitbucket и GitHub, он работает для обоих. Единственное, что вам нужно сделать,
3600
это в считанные секунды. Увеличьте его до любой степени, которую вы хотите. Я поменял его на259200
который около 30 дней. Таким образом, я повторяю свой пароль каждые 30 дней или около того.источник
Я полагаю, что вы исправили свою проблему, но я не вижу здесь решения, которое мне помогло, так что вот оно.
Введите в терминале:
Это очистит ваш
known_hosts
файл, и вам нужно будет добавить каждый хост, который вы использовали и подключились, но это решило проблему.источник
cat /dev/null > ~/.ssh/known_hosts
будет делать то же самое.> ~/.ssh/known_hosts
еще короче :)Я чувствую, что ответ, предоставленный static_rtti, в некотором смысле хакерский. Я не знаю, было ли это доступно ранее, но инструменты Git теперь предоставляют хранилище учетных данных.
Режим кэширования
Используйте режим «кэш», чтобы хранить учетные данные в памяти в течение определенного периода времени. Ни один из паролей никогда не хранится на диске, и они удаляются из кэша через 15 минут.
Режим магазина
Используйте режим «хранилище», чтобы сохранить учетные данные в виде простого текстового файла на диске, и они никогда не истекают.
Я лично использовал режим магазина . Я удалил свой репозиторий, клонировал его, а затем мне пришлось один раз ввести свои учетные данные.
Ссылка: 7.14 Git Tools - Хранение учетных данных
источник
credential.helper cache
не работает. Так и должно бытьgit config --global credential.helper wincred
.git config --local credential.helper store
. В моем случае, я использую HTTPS, таким образом я только один разОтвет orkoden на использование цепочки для ключей с Git в вашем терминале был неполным и вызывает ошибки. Вот что вам нужно сделать, чтобы сохранить имя пользователя и пароль, которые вы вводите в терминале в цепочке для ключей:
Затем введите
Если вы уже выполнили часть с настройкой Git до того, как начать работу с curl, это не проблема; это сработает.
источник
Как указано выше static_rtti, измените
в
Я сам изменил
https
в файле .git / config наssh
, но он все еще не работал. Потом я увидел , что вы должны изменитьgithub.com
кgit@github.com
. Хороший способ получить действительный правильный URL-адрес - перейти на страницу своего проекта и нажать на эту ссылку:Измените HTTPS на SSH, чтобы получить правильный URL
Затем добавьте этот URL в файл конфигурации.
источник
В Windows Subsystem for Linux (WSL) это было единственное решение, которое я нашел работающим:
eval
`SSH-agent`; ssh-add ~/.ssh/id_rsa
Это была проблема с ssh-agent, который не был должным образом зарегистрирован в WSL.
источник
Если вы хотите, чтобы Git не запрашивал учетные данные для входа в ваш репозиторий GitHub, это легко сделать.
Использование SSH вместо HTTPS
Вы можете обновить исходный пульт, используя SSH вместо HTTPS "
Настройте Git для хранения вашего пароля и имени пользователя
Вот как вы можете заставить Git хранить имя пользователя и пароль:
Затем сохраните имя пользователя и пароль для сеанса:
источник
Я согласен с «codehugger» и, используя инструкцию «orkoden», она работала для меня - в NetBeans 7.3 - когда вы щелкаете правой кнопкой мыши по файлу и выбираете контекстное меню - push - открывается окно «push to remote» - есть два варианты здесь:
origin:https://github.com/myaccount/myproject.git/
https://github.com/myaccount/myproject.git/
Как видите, разница заключается в параметре origin в URL - вы не хотите выбирать эту опцию (1), вы хотите проверить опцию (2), и это прекрасно работает для меня.
источник
Шаг 1: проверьте текущую конфигурацию
Ты получишь:
Шаг 2: удалите ваше удаленное происхождение
Шаг 3: добавьте удаленный источник обратно с вашим именем пользователя и паролем
источник
git branch --set-upstream master origin/master
Если Git запрашивает у вас имя пользователя и пароль каждый раз, когда вы пытаетесь взаимодействовать с GitHub, вы, вероятно, используете URL-адрес клонирования HTTPS для своего хранилища.
Использование удаленного URL-адреса HTTPS имеет ряд преимуществ: его проще настроить, чем SSH, и обычно он работает через строгие брандмауэры и прокси-серверы. Тем не менее, он также предлагает вам вводить учетные данные GitHub каждый раз, когда вы извлекаете или перемещаете хранилище.
Вы можете настроить Git для хранения вашего пароля. Для Windows :
источник
Запустив macOS Cataline 10.15, метод кэширования цепочки для ключей у меня не работал. И я хотел использовать
https://
неssh
Вот что сработало для меня:
Это должно работать и на GitLab
Убедитесь, что имя пользователя содержит адрес электронной почты, чтобы удалить
@email
часть, или вы получите сообщение об ошибкеURL using bad/illegal format or missing URL
.Надеюсь это поможет!
источник
Существуют разные виды аутентификации в зависимости от вашей конфигурации. Вот несколько из них:
git credential-osxkeychain
,Если ваши учетные данные недействительны, удалите их:
или:
Так что Git больше не будет просить у вас разрешения на связку ключей. Затем настройте его снова.
Смотрите: Обновление учетных данных из OS X Keychain на GitHub
Ваш ключ SSH RSA.
Для этого вам нужно сравнить ваш SSH-ключ с тем, что вы добавили, проверьте
ssh-add -L
/,ssh-add -l
если вы используете правильный идентификатор.Ваша аутентификация HTTPS (если вы используете
https
вместоssh
протокола).Используйте
~/.netrc
(%HOME%/_netrc
в Windows), чтобы предоставить свои учетные данные, например,Узнайте больше: Синхронизация с GitHub при переполнении стека.
источник
Прежде чем вы сможете использовать свой ключ с GitHub, выполните этот шаг в руководстве, Проверка вашего SSH-соединения :
источник
Наличие опечатки в URL заставит Git запрашивать у вас имя пользователя и пароль, глупый Git.
Он был протестирован на Kali Linux , Git версии 2.7.0,
Пытаться:
источник
Если вы используете Windows, и это неожиданно начало происходить совершенно неожиданно на GitHub, это, вероятно, связано с недавней отключенной поддержкой GitHub устаревших криптографических алгоритмов на 2018-02-22, и в этом случае решение заключается в простой загрузке и установке. последняя версия либо полного Git для Windows, либо просто Git Credential Manager для Windows .
источник
Решение для Microsoft Stack (Windows и Azure DevOps)
Сначала откройте
.git/config
файл, чтобы убедиться, что адрес выглядит так:Например .git / config для Azure DevOps:
Если проблема не устранена, откройте диспетчер учетных данных Windows , нажмите на сейф с именем «Учетные данные Windows». устранена и удалите все учетные данные, связанные с git.
Теперь, когда вы в следующий раз войдете в git, он больше не исчезнет.
источник
Если у вас настроен агент SSH, вы также можете добавить это в свой
~/.gitconfig
каталог, чтобы заставить git использовать SSH для всех репозиториев GitHub, а не HTTPS:(Если вы в основном работаете с публичными репозиториями, вы также можете использовать
pushInsteadOf
вместоinsteadOf
, так как чтение из публичного репо может быть выполнено без аутентификации).источник