Visual Studio Code всегда запрашивает учетные данные git


219

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

Я установил на свой компьютер GitHub Desktop, а также Git , я уже запустил:

 git config --global credential.helper wincred

но все же код Visual Studio запрашивает учетные данные.

Любая помощь?

вот мой файл .gitconfig, расположенный в профиле пользователя:

    [filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true
[user]
    name = ddieppa
[user]
    email = fake@live.com
[credential]
    helper = wincred

Вот всплывающие окна с запросом учетных данных:

введите описание изображения здесь

Я ввожу свои учетные данные GitHub во всплывающем окне, но все еще получаю эту ошибку в окне вывода Git в коде Visual Studio :

remote: Anonymous access to ddieppa/LineOfBizApp.git denied.
fatal: Authentication failed for 'https://github.com/ddieppa/LineOfBizApp.git/'

какой URL GItHub вы используете? HTTP или GIT (SSH)? Если вы используете HTTP URL, вы должны включить в него имя пользователя и пароль. Вам лучше использовать URL GIT и добавить свой открытый ключ SSH в список ключей SSH пользователя
yorammi

@yorammi Я новичок в работе с git, поэтому я установил Github Desktop и Git и попытался сохранить свой проект с помощью кода Visual Studio, так что я не знаю, что я передаю. Откуда я это знаю?
ddieppa

@ddieppa GitHub Desktop позволяет работать с двухфакторной аутентификацией по протоколу https. Однако это ломает другие инструменты. Как и в ответе на вопрос, вам нужно изменить исходный URL-адрес с https на ssh.
Лекс Ли

Ответы:


159

Последнее обновление: 05 марта 2019 г.

После 98 голосов, я думаю, что мне нужно дать верный ответ с объяснением.

Почему код VS запрашивает пароль? Поскольку VSCode запускает функцию автоматической выборки, в то время как у git server нет никакой информации, чтобы подтвердить вашу личность. Это происходит, когда:

  • У вашего git-репо есть httpsудаленный URL. Да! Этот вид пульта абсолютно спросит вас каждый раз. Здесь нет исключений! (Вы можете сделать временный трюк для кэширования авторизации, как показано ниже, но это не рекомендуется.)
  • У вашего git-репо есть sslудаленный URL, НО вы не скопировали ваш открытый ключ ssh на git-сервер. Используйте ssh-keygenдля генерации вашего ключа и копирования его на git-сервер. Готово! Это решение также помогает вам никогда не вводить пароль на терминале снова. Смотрите хорошую инструкцию от @Fnatical здесь для ответа.

Обновленная часть в конце этого ответа на самом деле вам не поможет. (Это фактически делает вас застойными в вашем рабочем процессе.) Это только останавливает вещи, происходящие в VSCode, и перемещает эти события в терминал.

Извините, если этот плохой ответ затронул вас в течение долгого времени.

-

оригинальный ответ (плохой)

Я нашел решение в документе VSCode :

Совет: Вам следует настроить помощника по учетным данным, чтобы не запрашивать учетные данные каждый раз, когда VS Code общается с вашими пультами Git. Если вы этого не сделаете, вы можете рассмотреть возможность отключения автозагрузки в меню ..., чтобы уменьшить количество получаемых запросов.

Итак, включите помощник по учетным данным, чтобы Git сохранял ваш пароль в памяти в течение некоторого времени. По умолчанию Git кеширует ваш пароль в течение 15 минут.

В Терминале введите следующее:

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)

ОБНОВЛЕНИЕ (если оригинальный ответ не работает)

Я установил VS Code и config то же самое выше, но, как сказал @ddieppa, у меня это тоже не сработало. Поэтому я попытался найти параметр в настройках пользователя и увидел «git.autofetch» ​​= true, теперь установите его как false! Код VS больше не требуется повторно вводить пароль!

В меню выберите File / Preferences / User Setting и введите эти:

Поместите ваши настройки в этот файл, чтобы перезаписать настройки по умолчанию

{
  "git.autofetch": false
}

2
Я попробовал это, но у меня не получилось, я даже пользуюсь этим: $ git config --global credential.helper wincred
ddieppa

В то время как решение автозагрузки останавливает проблему постоянного всплывающего окна, оно по-прежнему требует ввода учетных данных при каждом нажатии. При использовании ПК с http / s нижеприведенное решение для диспетчера учетных данных прекрасно работает.
Руттопия

3
вещи не должны появляться, если вы не инициировали действие, особенно вещи, требующие учетных данных - откуда вы знаете, что это безопасно, а не подделка?
Энтони Джонстон

7
Будьте осторожны с этой настройкой, пожалуйста! Это не предназначено, чтобы помочь вам вспомнить свои полномочия вообще. Речь идет об автоматической помощи вам в git-fetch. Пожалуйста, посмотрите на atlassian.com/git/tutorials/syncing#git-fetch для получения более подробной информации об этом. Что касается хранения ваших учетных данных, используйте команду git config --global credential.helper cache. Взгляните на git-scm.com/book/gr/v2/Git-Tools-Credential-Storage для более подробной информации.
Благодарен

7
Предполагать, что вы отключите автоматическую загрузку, хорошо, если вы оставите меня в покое. Но это все равно что сказать: «Если ваше программное обеспечение не работает, просто прекратите его использовать». Людям важно понимать разницу. Я хотел бы предложить, чтобы часть «ОБНОВЛЕНИЕ» этого ответа говорила «ЕСЛИ ЭТО НЕ РАБОТАЕТ», и объясняла, что вы можете заставить его перестать беспокоить вас, фактически не решая проблему. Часть ответа выше ОБНОВЛЕНИЕ фактически правильна (по крайней мере, следуя документации, сработавшей для меня)
Дон

68

Вы должны иметь возможность установить свои учетные данные следующим образом:

git remote set-url origin https://<USERNAME>:<PASSWORD>@bitbucket.org/path/to/repo.git

Вы можете получить удаленный URL следующим образом:

git config --get remote.origin.url


5
Если у меня есть @ в моем пароле, то какой будет URL?
Сувонкар,

Это действительно хороший способ. Один вопрос, однако, где эти учетные данные сохраняются в локальной файловой системе?
Теоман Шипахи

1
В файле .git \ config.
Йохосаф

также обратите внимание, что <ПАРОЛЬ> является необязательным, если вы не хотите сохранять свой пароль на локальном диске и хотите, чтобы вас по-прежнему запрашивали об этом.
Бен Баррет

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

55

Это работает для меня:
1. Установите хранилище учетных данных в хранилище
$ git config --global credential.helper store
2. Затем проверьте, хотите ли вы:
$ git config --global credential.helper store

Простой пример использования git bash, цитируемого здесь (работает только для текущего репо, используйте --globalдля всех репо)

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: < type your username >
Password: < type your password >

[несколько дней спустя]
$ git push http://example.com/repo.git
[ваши учетные данные используются автоматически]

Будет работать и для VS Code.

Более подробный пример и расширенное использование здесь .

Примечание. Имя пользователя и пароли не шифруются и хранятся в текстовом формате, поэтому используйте их только на своем компьютере.


2
Я понятия не имею, почему этот кеш просто не хочет работать для меня на Ubuntu 18.04 и против кода. storeсделал это.
Д. Дан

1
очень не безопасно. вместо этого используйте кеш. если ваш «персональный» компьютер будет взломан, ваши учетные данные git тоже могут быть взломаны ..
Hypersoft Systems

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

1
Мне нравится этот ответ лучше всего. Я не хочу, чтобы меня запрашивали имя пользователя / пароль каждый раз, когда я отправляю свой код в исходную точку (т. Е. GitLab), используя VS Code
Шон Маккарти

Я до сих пор утверждаю, что этот метод небезопасен. кредиты хранятся в файле `~ / .git-credentials`, которым можно злоупотреблять при взломе системы. Лучше изменить , httpsчтобы sshи использование ключей SSH в качестве альтернативы.
Mohith7548

21

Следующие шаги помогут вам понять, как:

  1. Генерация ключей SSH (без ключевой фразы **)
  2. Добавьте открытый ключ, сгенерированный на шаге 1, в свой Git-репозиторий
  3. Подтвердите, что вышеуказанные шаги были успешно выполнены
  4. Сделайте свой первый коммит (без указания имени пользователя / пароля)

** Генерация ключей SSH без ключевой фразы нецелесообразна, если ваша работа особенно чувствительна.

ОС - Fedora 28 | Редактор - VS Code v1.23.0 | Репозиторий - Git

Генерация ключей SSH:

  • ssh-keygen -t rsa -C "email@goeshere.com"
  • Введите файл для сохранения ключа : нажмите Enter
  • Введите пароль : нажмите Enter
  • Введите тот же пароль еще раз : нажмите Enter

После выполнения вышеуказанных действий местоположение вашего открытого ключа отображается в окне терминала. Если в данный момент вошедшим в систему пользователем является «bob», местоположение вашего открытого ключа будет /home/bob/.ssh/id_rsa.pub

Скопируйте и импортируйте открытый ключ в GitHub:

  • cat /home/bob/.ssh/id_rsa.pub

  • Скопируйте весь открытый ключ, который теперь отображается в окне терминала, в буфер обмена.

  • Перейдите на https://github.com и войдите в систему.
  • Нажмите значок пользователя в правом верхнем углу экрана и выберите « Настройки».
  • Нажмите SSH и GPG ключи
  • Нажмите Новый ключ SSH
  • Введите заголовок, вставьте открытый ключ, скопированный в буфер обмена, в первую точку маркера и нажмите « Добавить ключ SSH».

Подтвердите вышеуказанные шаги:

  • ssh -T git@github.com

  • yes

  • Здравствуй ! Вы успешно прошли аутентификацию, но GitHub не предоставляет доступ к оболочке.

Первый коммит / толчок без необходимости ввода имени пользователя / пароля: -touch test.txt

  • git add test.txt

  • git commit- открывает редактор, вводит сообщение и сохраняет файл. Если vi - ваш редактор, нажмите, как iтолько файл откроется, введите сообщение, нажмите esc, а затем введите, :xчтобы сохранить изменения.

  • git push

Единственный сбой, с которым вы можете столкнуться, это когда вы пытаетесь подключиться к GitHub по SSH. Эта ссылка окажет некоторую помощь -

Хорошей охоты!


20

Попробуйте установить « Git Credential Manager для Windows » (и следуйте инструкциям по настройке диспетчера учетных данных ).

При необходимости в приложении, использующем Git (например, VS Code), оно « волшебным образом » открывает необходимый диалог для ввода учетных данных Visual Studio Team Services.


4
Я бы тоже хотел, чтобы был "Git Credential Manager для Linux". Ой, подожди, я ssh-agentуже бегу . Но VS Code, похоже, игнорирует это в Linux.
парик

это самое простое решение для меня. и это прекрасно работает! спасибо за указание на это
dapidmini

20

Все, что мне нужно было сделать, это запустить эту команду:

git config --global credential.helper wincred

Затем мне дважды предложили ввести пароль.

В следующий раз это сработало без запроса пароля.


2
Спасибо! Проблема решена, и эта тоже !
Джеффри Розендал

4
В Ubuntu используйте storeвместо wincred.
Сис Тиммерман

1
Это сработало для меня! Вы также можете сделать, например, git config --global credential.helper 'cache --timeout==1209600'чтобы он длился 2 недели вместо 15 минут по умолчанию. Источник: help.github.com/en/github/using-git/…
Андрей

1
^ Подробнее об этом см. Здесь: git-scm.com/docs/gitcredentials git-scm.com/docs/git-credential-cache git-scm.com/docs/git-credential-store store будет постоянно хранить его на диск. Кроме того, мой предыдущий комментарий содержит ошибку: не используйте ==, используйте =. Слишком поздно для редактирования.
Андрей

18

Используйте ssh вместо http / https.

Вы должны установить ключи SSH на локальном компьютере, загружать их на свой сервер мерзавца и заменить форму URL - адрес , http://чтобы git://и вам не нужно больше используют пароли.

Если вы не можете использовать ssh, добавьте это в вашу конфигурацию:

[credential "https://example.com"]
    username = me

документы здесь .


Использование ключа SSH в GitHub


Просто следуйте этим шагам, и вы быстро настроите свой ssh-ключ:

  • Создайте новый ключ ssh (или пропустите этот шаг, если у вас уже есть ключ)
    ssh-keygen -t rsa -C "your@email"

  • Как только ваш ключ установлен в home/.sshдиректорию (или Users/<your user>.sshпод windows), откройте его и скопируйте содержимое


Как добавить ключ sh в аккаунт github?

  • Войти в аккаунт на github
  • Нажмите на ранчо в правом верхнем углу (Настройки)
    настройки аккаунта github
  • Нажми на SSH keys
    секция ключей ssh
  • Нажми на Add ssh key
    Добавить ключ SSH
  • Вставьте свой ключ и сохраните

И все готово к работе :-)


4
Вы также должны прояснить, в чем причина. В моем случае, поскольку я включил двухфакторную аутентификацию, SSH - единственный способ подключения к репо. Любое соединение https приведет к такой подсказке.
Лекс Ли

@ codeWizard Я точно не помню, что произошло, но VS Code работал нормально, я имею в виду подключение к репозиторию GitHub без какой-либо дополнительной настройки. Думаю, возможно, проблема в том, что я установил Git после Github Desktop, возможно ли это?
ddieppa

VC может хранить свои учетные данные внутри, и после того, как вы переустановите / обновите git, конфигурация может быть изменена. Я не пользователь VC, я парень из UNIX, поэтому я не могу проверить это на своей машине.
CodeWizard,

3
@codeWizard VS Код с открытым исходным кодом и мультиплатформенный, вы можете запустить его в Windows, MacOS или Linux :), работая над вариантом ssh и посмотреть, что я получу
ddieppa

1
Ссылка на документацию не работает.
Вишал

14

В общем, вы можете использовать встроенные хранилища учетных данных:

git config --global credential.helper store

Или, если вы используете Windows, вы можете использовать их учетную систему:

git config --global credential.helper wincred

Или, если вы используете MacOS, вы можете использовать их учетную систему:

git config --global credential.helper osxkeychain

Первое решение является оптимальным в большинстве ситуаций.


6

Автоматическая аутентификация Git . Из примечаний к выпуску v1.45 :

GitHub аутентификация для репозиториев GitHub

VS Code теперь имеет автоматическую аутентификацию GitHub против репозиториев GitHub. Теперь вы можете клонировать, извлекать, передавать в и из общедоступных и частных репозиториев без настройки какого-либо диспетчера учетных данных в вашей системе. Даже команды Git, вызываемые во встроенном терминале, например, git push, теперь автоматически аутентифицируются в вашей учетной записи GitHub.

Вы можете отключить аутентификацию GitHub с git.githubAuthenticationнастройкой. Вы также можете отключить интеграцию аутентификации терминала с git.terminalAuthentication настройкой.


Большой! Отключение этих двух параметров в Linux (Ubuntu 18.04 + KDE Plasma) исправляет обработку учетных данных. Эти два разрешения были переопределены askpass = /usr/bin/ksshaskpassв моем, .gitconfigи в результате я каждый раз получал имя пользователя и пароль. Это, вероятно, получит больше голосов как роли версии 1.45 на большем количестве машин.
Андрей Синицон

4

Для Windows 10: перейдите в панель управления / Диспетчер учетных данных / Windows Credential -> нажмите на ссылку git, -> edit -> update to new password. Это должно работать


2

Используйте ключ SSH без ключевой фразы.

Может быть, это очевидно для некоторых (не для меня). Это также не решает проблему, если вам абсолютно необходима фраза-пароль, но это был достойный компромисс в моей ситуации на Mac.


2

После недолгой борьбы с чем-то вроде этого, я думаю, я нашел хорошее решение, особенно когда у меня есть несколько учетных записей в GitHub и BitBucket. Однако для VSCode он в конечном итоге завершился запуском его с терминала Git Bash, чтобы он унаследовал переменные среды из сеанса bash и знал, на какой ssh-agent смотреть.

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

Я приведу здесь свои выводы, если кому-то интересно:


1

После этой статьи :

Вы можете просто установить GIT_SSH env. вар. к программе plink.exe Замазки. (Затем используйте pageant.exe в качестве агента авторизации)


1

Решите проблему, выполнив следующие действия.

Деинсталлировали ПО Vscode и git и переустанавливали тоже самое. Изменен URL-адрес клона репозитория git с ssh на https.


1

У меня была похожая проблема в коде Visual Studio.

Я решил, изменив удаленный URL на https . (в файле .git / config)

[remote "origin"]
    url = https://user@server.com/plesk-git/project.git

а также

git config --global credential.helper wincred

вытащил снова, всплывающее окно windows вышло, проблемы решены.


0

Для меня я настроил свое удаленное репо с ключом SSH, но git не смог их найти, потому что переменная среды HOMEDRIVE автоматически устанавливалась на сетевой ресурс из-за политики домена моей компании. Изменение этой переменной среды в моей оболочке перед запуском code .приводило к тому, что VSCode наследовал правильную переменную среды и больше не возникало ошибок соединения в окне вывода git.

Теперь мне просто нужно выяснить, как переопределить политику домена, чтобы HOMEDRIVE всегда указывал на мой локальный c:\users\marvhenкаталог, который является каталогом по умолчанию для .sshкаталога.


0

Мне удалось остановить это, выполнив следующие шаги.

  1. Удалите Git Desktop (не уверен, что это необходимо)
  2. Удалить диспетчер учетных данных, cd "C:\Program Files\Git\mingw64\libexec\git-core"а затемgit-credential-manager.exe uninstall
  3. Сброс помощника учетных данных для использования wincred git config --global credential.helper wincred
  4. Код пользователя VS для отправки некоторых изменений и повторного ввода учетных данных.

ПРИМЕЧАНИЕ. Я использовал токен личного доступа в качестве пароля.


0

Я решил похожую проблему простым способом:

  1. Перейти к CMD или терминалу
  2. Тип git pull origin master. Замените «origin» вашим удаленным именем
  3. Он попросит полномочия. Введи это.

Вот и все. Я решил проблему


0

кроме добавления записей конфигурации ssh выше

если окна

Set-Service ssh-agent -StartupType Automatic 

в powershell теперь vs код не должен подсказать ...


0

Для Windows 10 нажмите клавишу Windows, введите кредит, и вы должны увидеть «Диспетчер учетных данных» на панели управления. Нажмите, чтобы открыть, а затем удалить соответствующие кэшированные учетные данные, затем повторите попытку, он попросит ввести пароль пользователя с идентификатором пароля, и вы будете в порядке. ,

Случилось со мной, когда я сменил сетевой пароль


0

Я обычно запускаю эту простую команду, чтобы изменить удаленный URL git с https на ssh

git remote set-url origin git@github.com:username/repo-name-here.git
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.