Питання Чи є спосіб пропустити введення пароля при використанні https: // на GitHub?


Нещодавно я переключився на синхронізацію моїх сховищ з https: // на GitHub (через проблеми з брандмауером), і він кожного разу просить пароль. Раніше я мав SSH сертифікат, і цього було достатньо. Чи є спосіб обійти пароль у моєму випадку (за допомогою http / https)?


1623
2018-03-17 17:47


походження


Дивись також superuser.com/questions/199507/... - Colonel Panic
Тепер ви можете використовувати уповноваженого користувача для шифрування _netrc файл, що містить ваші облікові дані. Побачити моя відповідь нижче. Я виявив, що безпечніше, що git-credential-winstore.exe (кеш пам'яті), що трохи помиляється в Windows. - VonC
Дивись також Git push вимагає ім'я користувача та пароль і Гіт постійно підказує мені пароль.
git-credential-winstore працював найкраще для Windows. Що таке баггі? Налаштування ssh є найкращим варіантом, хоча я це зробив кілька разів, це, нарешті, більше схильні до помилок, а іноді просто, не працює, коли потрібно з'єднатися з кількома хостами. - Bron Davies
За допомогою "Сертифіката SSH" я вважаю, що ви маєте на увазі "приватний ключ SSH". - Michael Mior


Відповіді:


З Git версії 1.7.9 та пізнішої версії

Оскільки Git 1.7.9 (випущений наприкінці січня 2012 року), в Git існує акуратний механізм, щоб уникнути необхідності завжди вводити пароль для HTTP / HTTPS, який викликається помічники помічників. (Завдяки Дазонічний для вказівки цієї нової функції в коментарі нижче.)

За допомогою Git 1.7.9 або пізнішої версії ви можете просто скористатись одним із таких помічників:

git config --global credential.helper cache

... який повідомляє Git, що зберігає ваш пароль в кешування пам'яті для (за замовчуванням) 15 хвилин. Ви можете встановити довший час очікування з:

git config --global credential.helper "cache --timeout=3600"

(Цей приклад був запропонований в Довідкова сторінка GitHub для Linux.) Ви також можете зберігати свої облікові дані назавжди, якщо потрібно, перегляньте інші відповіді нижче.

Допомога GitHub також пропонує що якщо ви перебуваєте на Mac OS X і використовуєте Домашній прибиральник Щоб встановити Git, ви можете використовувати власну пам'ять Mac OS X з:

git config --global credential.helper osxkeychain

Для Windows існує допоміжний засіб Git Credential Manager для Windows або wincred в msysgit.

git config --global credential.helper wincred # obsolete

З Gіt для Windows 2.7.3+ (Березень 2016 р.):

git config --global credential.helper manager

Для Linux ви можете використовувати gnome-keyring(або інший застосунок для ключів, такий як KWallet).

З Git версіями до 1.7.9

З версіями Gіt до 1.7.9 цей більш безпечний параметр недоступний, і вам потрібно буде змінити URL-адресу свого origin віддалене використання, щоб включити пароль таким способом:

https://you:password@github.com/you/example.git

... іншими словами з :password після імені користувача та перед @.

Ви можете встановити нову URL-адресу для свого origin пульт з:

git config remote.origin.url https://you:password@github.com/you/example.git

Переконайтеся, що ви використовуєте https і ви повинні знати, що якщо ви це зробите, ваш пароль GitHub буде зберігатися у відкритому тексті у вашому .git каталог, який, очевидно, небажаний.

З будь-якою версією Git (ну, з версії 0.99)

Альтернативним підходом є введення вашого імені користувача та пароля у вашому ~/.netrc файл, хоча, як і при збереженні пароля в віддаленої URL-адресі, це означає, що ваш пароль буде зберігатися на диску у вигляді звичайного тексту і, таким чином, є менш безпечним і не рекомендується. Однак, якщо ви хочете застосувати цей підхід, додайте до вашого рядка наступний рядок ~/.netrc:

machine <hostname> login <username> password <password>

... замінити <hostname> з ім'ям імені сервера, і <username> і <password> з вашим іменем користувача та паролем. Також пам'ятайте, що встановити обмежувальні дозволи файлової системи на цей файл:

chmod 600 ~/.netrc

Зауважте, що в Windows цей файл повинен бути викликаний _netrc, і вам може знадобитися визначити змінну середовища% HOME%, щоб отримати докладнішу інформацію:


2136
2018-03-17 17:54



Не зберігайте свій пароль у звичайному тексті. За версією Git 1.7.9 ви можете використовувати помічники помічників. git config --global credential.helper osxkeychain в ОС X. Для інших OS див help.github.com/articles/set-up-git - dazonic
FWIW, речі osch keychain є частиною базового вихідного коду GIT, це не є ексклюзивним компонентом Brew або MacPorts або будь-якого аромату місяця. І вам навіть не потрібно створювати Git з нуля - просто cd contrib / credential / osxkeychain / і запустити make. - synthesizerpatel
З двофакторною автентифікацією ви повинні використовувати те, що github викликає a Токен особи доступу до особи. Насправді ви завжди повинні використовувати його, оскільки на відміну від пароля ви можете контролювати, який доступ він надає. Просто замініть пароль в URL-адресі, щоб у вас вийшло https://username:PERSONAL_ACCESS_TOKEN@github.com/username/project.git. Це робить прості текстові паролі, що зберігаються на диску, майже належним чином безпечним для використання. - Russell Stuart
git config --global credential.helper cache не працює на вікнах: stackoverflow.com/questions/11693074/... використовувати gitcredentialstore на Windows будь щасливим - Sebastian J.
Будь-який спосіб встановити цей тайм-аут на нескінченність? - sudo


Ви також можете мати Git зберігати свої облікові дані назавжди, використовуючи наступне:

git config credential.helper store

Примітка. Хоча це зручно, Git зберігатиме ваші облікові дані у вигляді чіткого тексту локальний файл (.git-облікові дані) у каталозі вашого проекту (див. нижче для каталогу "домашній"). Якщо вам це не подобається, видаліть цей файл і перейдіть на використання параметр кешу

Якщо ви хочете, щоб Git відновив запит на отримання повноважень кожного разу, коли це потрібно підключитися до віддаленого сховища, ви можете запустити цю команду:

git config --unset credential.helper

Зберігати паролі в .git-credentials в твоїй %HOME% каталог на відміну від проектної директорії: використовуйте --global прапор

git config --global credential.helper store

639
2017-09-03 01:14



У Windows ви можете завантажити допоміжну програму, яка налаштовує речі для зберігання зашифрованої версії вашого GIT-пароля в магазині Windows Creditial, див. confluence.atlassian.com/display/STASH/... - Contango
Я виявив, що мені потрібно вказати - global, або він намагатиметься зберегти налаштування у поточному сховищі: git config --global credential.helper store - Brian Gordon
Чому замість зберігання постійно зберігатиметься кеш? Спільний доступ до комп'ютерів чи щось? - Michael J. Calkins
@BrianGordon Я використовую GIT 1.9.5 на Windows і --global прапор був зайвим. Навіть без цього прапора в обліковому записі був створений файл %USER_HOME% каталог - jFrenetic
якщо не зберігати в звичайному тексті, то що це захищає? Ваш пароль? Чи не тоді вам доведеться просити вас про пароль адміністратора під час підключення до git? Не потрібно вводити пароль, щоб отримати трохи незрозумілий інший пароль? - Cruncher


TLDR; Використовуйте a зашифрований файл netrc з Git 1.8.3+.

Збереження пароля для URL-адреси HTTPS сховища Git можливе за допомогою a ~/.netrc (Unix) або %HOME%/_netrc (зверніть увагу на _) на Windows.

Але: Цей файл буде зберігати ваш пароль у звичайному тексті.

Рішення: Шифруйте цей файл за допомогою GPG (GNU Privacy Guard), і зробити Git розшифровувати його кожного разу, коли йому потрібен пароль (для push/pull/fetch/clone операція)


Примітка. За допомогою Git 2.18 (Q2 2018) ви можете налаштувати GPG, що використовується для розшифровки зашифрованого .netrc файл

Побачити вчинити 786ef50, скоєно f07eeed (12 травня 2018 року) Луїс Марсано (``).
(Злиття Junio ​​C Hamano - gitster - в commit 017b7c5, 30 травня 2018 р.) 

git-credential-netrc: прийміть gpg варіант

git-credential-netrc був жорстким кодом для розшифровки з "gpg"незалежно від"   опція gpg.program.
  Це проблема в дистрибутивах, як Debian, які називають сучасну GnuPG чимось іншим, наприклад "gpg2'


Крок за кроком інструкції для Windows

З Windows:

(Гіт має gpg.exe у своєму розподілі, але за допомогою повної установки GPG входить: a gpg-agent.exe, який запам'ятовує вашу парольну фразу, пов'язану з вашим ключем GPG.)

  • Встановити gpg4Win Lite, мінімальний інтерфейс командного рядка gnupg (візьміть найновіший gpg4win-vanilla-2.X.Y-betaZZ.exe), і заповніть PATH за допомогою каталогу встановлення GPG:

    set PATH=%PATH%:C:\path\to\gpg
    copy C:\path\to\gpg\gpg2.exe C:\path\to\gpg\gpg.exe
    

(Зверніть увагу на "copy'command: Git потребує сценарію Bash для виконання команди'gpg'. З тих пір gpg4win-vanilla-2 поставляється з gpg2.exe, ви повинні дублювати його.)

  • Створіть або імпортуйте ключ GPG і довіряйте йому:

    gpgp --import aKey
    # or
    gpg --gen-key
    

(Обов'язково додайте парольну фразу до цього ключа.)

  • Довіряю, що ключ

  • Встановіть скрипт допоміжного посвідчення в довіднику у вашому %PATH%:

    cd c:\a\fodler\in\your\path
    curl -o c:\prgs\bin\git-credential-netrc https://raw.githubusercontent.com/git/git/master/contrib/credential/netrc/git-credential-netrc
    

(Так, це скрипт Bash, але він буде працювати на Windows, оскільки він буде викликаний Git.)

  • Зробіть файл _netrc в чистому тексті

    machine a_server.corp.com
    login a_login
    password a_password
    protocol https
    
    machine a_server2.corp.com
    login a_login2
    password a_password2
    protocol https
    

(Не забудьте про "protocol'частина:'http"або"https"залежно від URL-адреси, яку ви використовуватимете.)

  • Зашифруйте цей файл:

    gpg -e -r a_recipient _netrc
    

(Тепер ти можеш видалити в _netrc файл, зберігаючи тільки _netrc.gpg зашифрований.)

  • Використовуйте цей зашифрований файл:

    git config --local credential.helper "netrc -f C:/path/to/_netrc.gpg -v"
    

(Зверніть увагу на "/': C:\path\to... не буде працювати взагалі.) (Можна спочатку користуватися -v -d щоб побачити, що відбувається.)

Відтепер будь-яка команда Gіt, яка використовує HTTP (S) URL, яка вимагає автентифікації, буде розшифровувати це _netrc.gpgфайл та використовуйте логін / пароль, пов'язані з сервером, з яким ви зв'язані. Вперше GPG запитає вас парольну фразу вашого ключа GPG для розшифровки файлу. Інколи - gpg-agent запускається автоматично за допомогою першого виклику GPG надасть вам цю парольну фразу.

Таким чином, ви можете запам'ятати кілька URL-адреси / логіни / паролі в одному файлі, і він зберігається на вашому диску зашифрований.
Я вважаю, що це зручніше, ніж "помічник" кеш-пам'яті ", де вам потрібно запам'ятовувати та вводити (один раз на сеанс) інший пароль для кожного з ваших віддалених служб, щоб вказати пароль, який буде кешовано в пам'яті.


85
2017-08-21 15:48



пробую те ж саме в Linux .. git config - локальні credential.helper "netrc -f /home/me/.netrc.gpg -v -d" .. а я отримую "git:" credential-netrc "не є git команда. дивіться 'git --help' " - sunny
@ сонячне Це те, що curl -o c:\prgs\bin\git-credential-netrc https://raw.github.com/git/git/master/contrib/credential/netrc/git-credential-netrc для: потрібно скопіювати git-credential-netrc скрізь на вашому шляху ($PATH), щоб git міг називати "credential-netrc'. - VonC
Спасибі це пропустили. - sunny
Ну, це _netrc не працював для мене на Windows 7 ПК, але .netrc працював на youtube-dl з --netrc Аргумент передано йому. - Iulian Onofrei
Найкраще рішення має бути на вершині. - Doug713705


Існує легкий старомодний спосіб зберігання облікових даних користувача в URL-адресі HTTPS:

https://user:password@github.com/...

Ви можете змінити URL-адресу за допомогою git remote set-url <remote-repo> <URL>

Очевидним недоліком цього підходу є те, що ви повинні зберігати пароль у звичайному тексті. Ви все одно можете просто ввести ім'я користувача (https://user@github.com/...), який принаймні позбавить вас половини труднощів.

Ви можете віддати перевагу переходу на SSH або використовувати програмне забезпечення клієнта GitHub.


32
2018-01-06 16:43



Ім'я користувача та пароль повинні бути закодовані, див stackoverflow.com/a/34611311/3906760 - MrTux


Використовуйте магазин облікових даних.

Для GIT 2.11+ на OSX і linux, скористайтеся вбудованим магазином облікових даних git:

git config --global credential.helper libsecret

Для msysgit 1.7.9+ на Windows:

git config --global credential.helper wincred

Для Git 1.7.9+ на ОС X використовуйте:

git config --global credential.helper osxkeychain

30
2017-09-09 03:57



Я впевнений, що це шлях, але я помиляюсь: git: 'credential-gnome-keyring' is not a git command. See 'git --help'. - codepleb
Спасибі, але я точно отримую ту саму помилку. Я робити щось не так? Я ввожу команду, і нічого не відбувається. Як тільки я натискаю, мені запитують облікові дані, які я успішно вставляю, але я отримую помилку, що це не команда git після цього. - codepleb
Перш ніж libsecret буде працювати на Linux, вам потрібно виконати наступні дії: stackoverflow.com/a/40312117/775800 - Lavamantis
Інша річ - якщо у вас є 2FA включений в Github, ваш пароль не буде працювати. Але ви можете створити маркер особистого доступу на сторінці "Налаштування" Github, і цей токен працює як ваш пароль. github.com/github/hub/issues/822 - Lavamantis
credential-libsecret 'не є командою git - Siddharth


Ви можете просто використовувати

git config credential.helper store

Коли ви введете пароль наступного разу за допомогою pull або push, він буде збережений .git-мандати як звичайний текст (трохи незахищений, але просто помістити його в захищену папку)

І це, як зазначено на цій сторінці:

https://git-scm.com/docs/git-credential-store


30
2017-09-21 13:03



Для Git для Windows 2.7.3 (березень 2016 року): github.com/git-for-windows/git/releases?after=v2.8.4.windows.1, це було б git config credential.helper manager замість цього - VonC
Це відповідь на мою думку, насправді відповідає на запитання ОП - Climax


Я, мабуть, трохи повільно, але мені не відразу було очевидно, що спочатку треба завантажити помічника! Я знайшов credential.helper завантажити на Окласіан постійно автентифікує з сховищами Git, сподіваюся, це допоможе.

Цитата:

Виконайте наступні кроки, якщо ви хочете використовувати Git з кешуванням облікових даних в OSX:

Завантажте бінарний git-credential-osxkeychain.

Запустіть команду нижче, щоб забезпечити виконуваний файл binary:

chmod a+x git-credential-osxkeychain

Вставте його в каталог / usr / local / bin.

Запустіть команду нижче:

git config --global credential.helper osxkeychain

18
2017-10-05 05:31





У налаштуваннях GNU / Linux дуже добре працює ~ / .netrc:

$ cat ~/.netrc
machine github.com login lot105 password howsyafather

Це може залежати від того, які мережні бібліотеки Git використовує для HTTPS транспорт


18
2017-12-05 13:28



Не забудьте також chmod 0600 ~/.netrc. - poolie
Просто хочете залишити посилання тут Ubuntu netrc manpage. Мені потрібно було створити його для іншого користувача (/home/git/.netrc), а потім змінити власність на цей користувач. - zacharydl


Просто введіть реєстраційні дані як частину URL-адреси:

git remote rm origin 
git remote add origin https://username:mypassword@github.com/path/to/repo.git

15
2017-07-03 07:13



не працює, якщо ім'я користувача - це електронний лист - Anirudh Goel
він буде працювати, вам доведеться вийти з @ з% 40 у вашому ідентифікаторі електронної пошти - Tarun Gupta
Що робити, якщо в ідентифікаторі електронної пошти є "+"? Я спробував так само втекти, але поштовх сказав: "репо не знайдено" - killjoy
мати% 2B, а не + - Tarun Gupta
Для довідки: url-encode-decode.com - dviljoen