Код Visual Studio завжди запитує облікові дані git


218

Я почав використовувати код Visual Studio , і я намагався зберегти свій тестовий проект у GitHub , але Visual Studio Code завжди просить мої дані GitHub .

Я встановив у свій ПК GitHub Desktop, а також Git , я вже запускав:

 git config --global credential.helper wincred

але все ще Visual Studio Code запитує облікові дані.

Будь-яка допомога?

ось мій .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 Code :

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

яку URL-адресу GItHub ви використовуєте? HTTP або GIT (SSH)? Якщо ви використовуєте URL-адресу HTTP, ви повинні вказати користувача та пароль у URL-адресі. Ви краще скористайтеся URL-адресою GIT і додайте свій відкритий ключ SSH у список ключів SSH користувача
yorammi

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

@ddieppa GitHub Desktop має можливість працювати з двофакторною автентифікацією за допомогою https-з'єднання. Однак це порушує інші інструменти. Як і у відповіді, сказано, що вам потрібно змінити вихідну URL-адресу з https на ssh.
Лекс Лі

Відповіді:


158

Останнє оновлення: 05 березня 2019 року

Після 98 заявок я думаю, що мені потрібно дати правдиву відповідь із поясненням.

Чому VS-код запитує пароль? Оскільки VSCode запускає функцію автоматичного отримання, в той час як git-сервер не має жодної інформації, яка б підтверджувала вашу особу. Це відбувається, коли:

  • У вашому git repo є httpsвіддалений URL. Так! Такий пульт дистанційного керування вас абсолютно просить кожен раз. Тут немає винятків! (Ви можете зробити тимчасовий трюк, щоб кешувати авторизацію як рішення нижче, але це не рекомендується.)
  • Ваше git repo має 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 і конфігуруй те саме вище, але, як сказав @ddieppa, це не працювало і для мене. Тож я спробував знайти параметр у Налаштуваннях користувачів, і побачив "git.autofetch" = true, тепер встановив, що це неправда! Код VS більше не потрібно вводити пароль ще раз!

У меню натисніть Файл / Налаштування / Налаштування користувача та введіть ці:

Помістіть свої налаштування в цей файл, щоб замінити настройки за замовчуванням

{
  "git.autofetch": false
}

2
Я спробував це, але не спрацював для мене, я навіть користуюся цим: $ git config --global
poveritel.helper

Хоча рішення автозавантаження зупиняє постійну проблему спливаючого вікна, воно все одно вимагає введення облікових даних при кожному натисканні та витягуванні Якщо ви використовуєте ПК з http / s, рішення менеджера облікових даних нижче.
ruttopia

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
Запропонувати вимкнути автозавантаження - це чудово як варіант "залишити мене в спокої". Але це схоже на те, що "Якщо ваше програмне забезпечення не працює, просто припиніть його використовувати". Люди важливо усвідомити різницю. Я б запропонував, щоб частина "ОНОВЛЕННЯ" у цій відповіді сказала "ЯКЩО НЕ ПРАЦЮЄ" замість цього, і поясніть, що ви можете змусити це перестати турбувати вас, не фактично виправляючи проблему. Частина відповіді вище UPDATE насправді правильна (принаймні, за посиланням на документацію, яка працювала на мене)
Дон

67

Ви повинні мати змогу встановити такі свої дані:

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.
йохосуф

також зауважте, що <PASSWORD> необов'язково, якщо ви не хочете зберігати свій пароль на локальному диску і хочете продовжувати запит на це.
Бен Баррет

Ви також можете надати персональний маркер доступу, який використовуватимете для свого пароля, таким чином ви не виставляєте реальний пароль облікового запису, імовірно, зберігається в простому тексті. Також ви можете легко видалити положення, якщо хочете або якщо ви думаєте, що ваша система загублена або порушена.
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 та коді vs. storeзробив це.
D. Dan

1
дуже не безпечно. використовувати замість кешу. якщо ваш "особистий" комп'ютер буде зламаний, ваші дані git також можуть бути зламані ..
Hypersoft Systems

1
кеш економить облікові дані в пам'яті, це не довгострокове рішення. Вам не доведеться вводити ім’я користувача та пароль кожен раз, але все ж доведеться вводити їх досить часто.
Вішал

1
Мені подобається ця відповідь найкраще. Мені не хочеться, щоб мене запрошували вводити ім’я користувача / пароль кожен раз, коли я натискаю свій код на початок (тобто GitLab) за допомогою VS Code
Sean McCarthy

Я все ще стверджую, що цей спосіб небезпечний. Записи зберігаються у файлі `~ / .git-poveritiveals`, яким можна зловживати, коли система порушена. Краще змінити , httpsщоб sshі використання ключів SSH в якості альтернативи.
Mohith7548,

21

Наступні кроки допоможуть вам:

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

** Створювати SSH-ключі без парольної фрази нерозумно, якщо ваша робота особливо чутлива.

ОС - Fedora 28 | Редактор - Код VS 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

Єдиний гикав, з яким ви можете зіткнутися, - це коли ви намагаєтеся SSH на GitHub. Це посилання надасть певну допомогу -

Щасливого полювання!


20

Спробуйте встановити " Git Credential Manager для Windows " (та дотримуйтесь інструкцій із налаштування менеджера облікових даних ).

За потреби в додатку, що використовує Git (наприклад, код VS), він " магічно " відкриє необхідне діалогове вікно для введення облікових даних Visual Studio Team Services.


3
Мені б хотілося, щоб був також "Git Credential Manager for Linux". Ой, чекай, я ssh-agentвже біжу . Але VS Code, здається, ігнорує це в Linux.
wigy

це для мене найпростіше рішення. і це чудово працює! дякую, що
вказали на

20

Все, що мені потрібно було зробити, це запустити цю команду:

git config --global credential.helper wincred

Потім мені було запропоновано ввести пароль двічі.

Наступного разу він працював, не вимагаючи мене для пароля.


2
Дякую! Проблема вирішена, і ця теж !
Джефрі Росендаал

4
Для Ubuntu використовуйте storeзамість wincred.
Cees Timmerman

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 на вашій локальній машині, завантажити їх на свій git-сервер та замінити форму 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під вікном), відкрийте його та скопіюйте вміст


Як додати ключ 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 Code з відкритим кодом та багатоплатформою, ви можете запустити його в 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 тепер має автоматичну аутентифікацію 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 -> натисніть на посилання git, -> редагувати -> оновити новий пароль. Це має спрацювати


2

Використовуйте ключ SSH без парольної фрази.

Можливо, комусь це очевидно (мені не було). Це також не вирішує проблему, якщо вам абсолютно потрібна парольна фраза, але це був гідний компроміс у моїй ситуації на Mac.


2

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

Я усвідомлюю, що це старий пост, але я все ще намагався знайти одне місце, щоб отримати потрібну мені інформацію. Крім того, з 2017 року ssh-агент отримав можливість запропонувати вам пройти фразу лише тоді, коли ви намагаєтесь отримати доступ до репо.

Я викладаю свої висновки тут, якщо когось цікавить:


1

Після цієї статті :

Ви можете просто встановити GIT_SSH env. вар. до програми plink.exe Putty. (Тоді використовуйте pageant.exe як авторський агент)


1

Вирішіть проблему, виконавши наступні кроки.

Видалення програмного забезпечення Vscode та git та перевстановлення того ж. Змінено URL клонування сховища git з ssh на https.


1

У мене була схожа проблема в Visual Studio Code.

Я вирішив, змінивши віддалений 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. Замініть "походження" своїм віддаленим іменем
  3. Він запитає повноваження. Наберіть його.

Це все. Я вирішив проблему


0

крім додавання ssh-конфігураційних записів вище

якщо вікна

Set-Service ssh-agent -StartupType Automatic 

тепер у повноекранному коді 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.