Я хочу використовувати "push and pull" автоматично в GitExtension , не вводячи свого користувача та пароля підказки кожного разу.
Тож як я можу зберегти свої облікові дані в git?
Я хочу використовувати "push and pull" автоматично в GitExtension , не вводячи свого користувача та пароля підказки кожного разу.
Тож як я можу зберегти свої облікові дані в git?
Відповіді:
Біжи
git config --global credential.helper store
тоді
git pull
введіть ім’я користувача та пароль, і ці дані будуть запам’ятовуватися пізніше. Повноважні дані зберігаються у файлі на диску, з дисковими правами "просто читаєми / записуються користувачем", але все ще в простому тексті.
Якщо ви хочете змінити пароль пізніше
git pull
Не вдасться, оскільки пароль невірний, git потім видаляє користувача, який ображає права, + пароль із ~/.git-credentials
файлу, тому тепер повторно запустіть
git pull
надати новий пароль, щоб він працював як раніше.
Ви можете використовувати git config
для ввімкнення зберігання облікових даних у git.
git config --global credential.helper store
Під час виконання цієї команди при першому натисканні або натисканні з віддаленого сховища вас запитають про ім’я користувача та пароль.
Згодом для подальшої комунікації з віддаленим сховищем не потрібно вказувати ім’я користувача та пароль.
Формат зберігання - це .git-credentials
файл, що зберігається в простому тексті.
Крім того, ви можете використовувати інші помічники для git config credential.helper
кешу пам’яті:
git config credential.helper cache <timeout>
що займає необов'язково timeout parameter
, визначаючи, як довго облікові дані зберігатимуться в пам'яті. Використовуючи помічник, облікові дані ніколи не торкаються диска та будуть видалені після вказаного часу. default
значення900 seconds (15 minutes).
ПОПЕРЕДЖЕННЯ : Якщо ви використовуєте цей метод, ваші паролі облікового запису git будуть збережені у plaintext
форматі global .gitconfig file
, наприклад, у Linux, це буде/home/[username]/.gitconfig
Якщо це для вас небажано, використовуйте ssh key
натомість для своїх облікових записів.
git config credential.helper cache
паролі не будуть збережені у файл, а лише збережені в пам'яті. Дивіться: git-scm.com/docs/git-credential-cache
Рекомендований та безпечний метод: SSH
Створіть ключ ssh Github. Перейдіть на сторінку github.com -> Налаштування -> Ключі SSH та GPG -> Новий ключ SSH. Тепер збережіть свій приватний ключ на комп’ютері.
Потім, якщо приватний ключ збережено як id_rsa у каталозі ~ / .ssh / , ми додамо його для автентифікації як такого:
ssh-add -K ~/.ssh/id_rsa
Більш безпечний метод: кешування
Ми можемо використовувати git-credential-store, щоб кешувати своє ім’я користувача та пароль протягом певного періоду. Просто введіть у свій CLI (термінальний або командний рядок) наступне:
git config --global credential.helper cache
Ви також можете встановити період очікування (у секундах) як такий:
git config --global credential.helper 'cache --timeout=3600'
Навіть менш безпечний метод
Також може бути використана програма Git-credential-store, але зберігає паролі у простому текстовому файлі на вашому диску:
git config credential.helper store
Застарілий відповідь - Швидкий і небезпечний
Це незахищений спосіб зберігання пароля у простому тексті. Якщо хтось отримає контроль над вашим комп’ютером, ваш пароль буде викритий!
Ви можете встановити своє ім’я користувача та пароль так:
git config --global user.name "your username"
git config --global user.password "your password"
У Терміналі введіть наступне:
# Set git to use the credential memory cache
git config --global credential.helper cache
За замовчуванням Git буде кешувати ваш пароль протягом 15 хвилин.
Щоб змінити тайм-аут кешу пароля за замовчуванням, введіть наступне:
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'
cache
частину на store
. Таким чином, повна команда буде: git config --global credential.helper store
. Зауважте, що це збереже Ваш пароль у відкритому текстовому файлі (без будь-якого шифрування, так би мовити).
--timeout
параметра?
Ви можете редагувати ~/.gitconfig
файл, щоб зберігати свої облікові дані
sudo nano ~/.gitconfig
Який уже мав би мати
[user]
email = your@email.com
user = gitUSER
Ви повинні додати внизу цього файлу.
[credential]
helper = store
Я рекомендую цей варіант, тому що він є глобальним, і якщо в будь-який момент вам потрібно видалити варіант, ви знаєте, куди піти і змінити його.
ВИКОРИСТОВУЙТЕ ТОМУ ВАРТІ ВИ ОСОБИСТИЙ КОМП'ЮТЕР.
Тоді, коли ви тягнете | клон | введіть пароль git, загалом пароль буде збережено у ~/.git-credentials
форматі
https://GITUSER:GITPASSWORD@DOMAIN.XXX
ДЕ ДОМАН.XXX МОЖЕ БУТИ ГИТУБ.COM | BITBUCKET.ORG | ІНШИЙ
Див. Документи
Просто введіть свої облікові дані в URL-адресу так:
https://Username
:Password
@github.com/myRepoDir/myRepo.git
Ви можете зберігати його так:
git remote add myrepo https://Userna...
... приклад для використання :
git push myrepo master
Тепер це перелік псевдонімів URL:
git remote -v
... і що команда видалити одну з них:
git remote rm myrepo
git@github.com:Username/myRepo.git
https
, а не ssh
таке рішення, як таке може бути корисним там. Зауважте також, що ви можете використовувати маркер-oauth, який є максимально безпечним, ніж ваш пароль GitHub.
Для глобальної настройки відкрийте термінал (з будь-якого місця), виконайте наступне:
git config --global user.name "your username"
git config --global user.password "your password"
Таким чином, будь-яка локальна програма git repo, яка є у вас на комп'ютері, буде використовувати цю інформацію.
Ви можете індивідуально налаштувати кожне репо, виконавши:
запустіть наступне:
git config user.name "your username"
git config user.password "your password"
Це впливає лише на цю папку (оскільки ваша конфігурація локальна).
--local
тег, але знову нічого не відбувається
Ви можете використовувати git-credential-store для зберігання паролів, незашифрованих на диску, захищених лише дозволами файлової системи.
Приклад
$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]
Ви можете перевірити облікові дані, що зберігаються у файлі ~/.git-credentials
Для отримання додаткової інформації відвідайте git-poverljiv-store - помічник для зберігання облікових даних на диску
Ви будете більш безпечними, якщо будете використовувати автентифікацію SSH, ніж ім'я користувача / пароль.
Якщо ви використовуєте Mac, автентифікація клієнта SSH інтегрується в брелок MacOS. Після створення ключа SSH введіть у свій термінал:
ssh-add -K ~/.ssh/id_rsa
Це додасть приватний ключ SSH до брелоку MacOS. Клієнт git буде використовувати ssh під час підключення до віддаленого сервера. Поки ви зареєстрували свій відкритий ключ ssh на сервері, у вас все буде добре.
SSH
. Використовуючи аутентифікацію HTTP, хтось, хто вкрав облікові дані, отримав би доступ лише до них GitHub/GitLab
. Також маркер призначений для обмеженого життя.
Переглянувши десятки публікацій SO, блогів тощо, я спробував кожен метод, і ось що я придумав. Він охоплює ВСЕ.
Це всі способи та інструменти, за допомогою яких можна надійно засвідчити git для клонування сховища без інтерактивного запиту пароля .
Хочете просто працює ™? Це чарівна срібна куля.
Отримайте маркер доступу (див. Розділ у шаблоні, якщо вам потрібні інструкції Github або Gitea) та встановіть його в змінну середовища (як для локальних розробників, так і для розгортання):
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
Для Github скопіюйте та запустіть ці рядки дослівно :
git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"
Вітаю, тепер будь-яке автоматизоване інструмент для клонування репозиторіїв git не буде перешкоджати запиту паролем, використовуючи https чи будь-який стиль ssh url.
Не використовуєте Github?
Для інших платформ (Gitea, Github, Bitbucket) просто змініть URL-адресу. Не змінюйте імена користувачів (хоча вони є довільними, вони потрібні для різних конфігураційних записів).
Сумісність
Це працює локально в MacOS, Linux, Windows (на Bash), Docker, CircleCI, Heroku, Akkeris тощо.
Більше інформації
Дивіться розділ ".gitconfig замістьOf" шаблону.
Безпека
Дивіться розділ "Безпека" шаблону.
git config --global credential."https://somegithost.com".username MyUserName
, що є у вашому шаблоні, але ніде більше в цій темі відповідей. Це конкретне рішення не відповідає на питання ОП, але воно відповіло моєму, тож дякую!
У цьому випадку вам потрібен помічник git, щоб повідомити git запам'ятати свій пароль та ім’я користувача GitHub, використовуючи наступний командний рядок:
git config --global credential.helper wincred
і якщо ви використовуєте репо, використовуючи ключ SSH, тоді вам потрібен ключ SSH для аутентифікації.
Жодна з вищезгаданих відповідей не працювала для мене. Я постійно отримував наступне щоразу, коли захотів fetch
або pull
:
Enter passphrase for key '/Users/myusername/.ssh/id_rsa':
Для Mac
Мені вдалося не допустити запитання про свою парольну фразу:
vi ~/.ssh/config
UseKeychain yes
:wq!
Для Windows
Мені вдалося змусити його працювати, використовуючи інформацію в цій зміні stackexchange: https://unix.stackexchange.com/a/12201/348665
Крім редагування ~/.gitconfig
файлу, що ви можете зробити, якщо запитаєте:
git config --local --edit
або
git config --global --edit
git config --local user.name 'your username'
git config --local user.password 'your password'
або
git config --global user.name 'your username'
git config --global user.password 'your password'
Ваше ім'я користувача та пароль можуть використовувати деякі символи, які порушують ваш пароль, якщо ви використовуєте подвійні лапки.
--local
або --global
означає, що параметри конфігурації зберігаються для проекту або для користувача OS.
просто використовувати
git config --global credential.helper store
і виконайте потяг git , він запитає ім’я користувача та пароль, відтепер він не надаватиме жодного запиту для імені користувача та пароля, він зберігатиме дані
.git-credentials
це місце, де під час запуску зберігаються ваше ім’я користувача та пароль (маркер доступу) git config --global credential.helper store
, що підказує інші відповіді, а потім введіть своє ім’я користувача та пароль або маркер доступу:
https://${username_or_access_token}:${password_or_access_token}@github.com
Отже, щоб зберегти ім’я користувача та пароль (маркер доступу):
git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials
Це дуже корисно для робота github, наприклад, для вирішення автоматизованих побудов ланцюга в одному сховищі докера , маючи правила для різної гілки, а потім запускати його, натискаючи на нього в post_push
гачку в докер-хабі.
Приклад цього можна побачити тут у stackoverflow.
Швидкий спосіб кешування облікових даних git:
git config credential.helper 'cache' --timeout=10800
приємно і безпечно
час очікування в секундах.
Прочитавши нитку повністю і експериментуючи з більшістю відповідей на це питання, я врешті знайшов процедуру, яка працює для мене. Я хочу поділитися цим випадком, якщо комусь доводиться стикатися зі складною справою використання, але все ще не хочу пройти повний потік та сторінки сторінок людини gitcredentials , gitcredentials-store тощо.
Нижче див. Процедуру, яку я пропоную, якщо вам (як і мені) доведеться мати справу з декількома сховищами від декількох постачальників (GitLab, GitHub, Bitbucket тощо), використовуючи кілька різних комбінацій імені користувача / пароля. Якщо натомість у вас є лише один обліковий запис, з яким ви можете працювати, то вам може бути краще використовувати рішення git config --global credential.helper store
або git config --global user.name "your username"
тощо, які були дуже добре пояснені в попередніх відповідях.
Моє рішення:
> git config --global --unset credentials.helper
> cd /path/to/my/repo
> git config --unset credential.helper
> git config credential.helper 'store --file ~/.git_repo_credentials'
Примітка . Ця команда створює новий файл під назвою ".git_repo_credentials" у вашому домашньому каталозі, до якого Git зберігає ваші облікові дані. Якщо ви не вказали ім'я файлу, Git використовує за замовчуванням ".git_credentials". У цьому випадку просто виконати наступну команду:
> git config credential.helper store
git config credential.*.username my_user_name
Примітка : використання "*" зазвичай нормально, якщо ваші сховища постачаються від одного постачальника (наприклад, GitLab). Якщо натомість у ваших сховищах розміщуються різні провайдери, я пропоную чітко встановити посилання на провайдера для кожного сховища, як у наступному прикладі (для GitLab):
git config credential.https://gitlab.com.username my_user_name
У цей момент, якщо ви git pull
видасте команду, яка вимагає ваших облікових даних (наприклад ), вам буде запропоновано пароль, що відповідає "my_user_name". Це потрібно лише один раз, оскільки git зберігає облікові дані для ".git_repo_credentials" і автоматично використовує ті самі дані при наступних доступах.
З коментаря rifrol, про Linux Ubuntu, з цієї відповіді , ось як у Ubuntu:
sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
Деякі інші дистрибутиви надають двійковий код, тому вам не доведеться його будувати.
В OS X він зазвичай "вбудований" з модулем "osxkeychain" за замовчуванням, тому ви отримуєте його безкоштовно.
Перевірте офіційну документацію на git:
Якщо ви використовуєте транспорт SSH для підключення до віддалених мереж, ви можете мати ключ без парольної фрази, що дозволяє безпечно переносити дані, не вводячи своє ім’я користувача та пароль. Однак це неможливо з протоколами HTTP - для кожного з'єднання потрібні ім’я користувача та пароль. Це стає ще складніше для систем з двофакторною автентифікацією, де маркер, який ви використовуєте для пароля, генерується випадковим чином і не випливає.
На щастя, Git має систему облікових даних, яка може допомогти у цьому. У Git є кілька варіантів, що містяться в полі:
За замовчуванням взагалі не кешувати. Кожне з'єднання підкаже вам своє ім’я користувача та пароль.
Режим "кеш" зберігає облікові дані в пам'яті протягом певного періоду часу. Жоден з паролів ніколи не зберігається на диску, і вони видаляються з кеша через 15 хвилин.
Режим "зберігання" зберігає облікові дані в просто текстовому файлі на диску, і вони ніколи не закінчуються. Це означає, що поки ви не зміните пароль для хоста Git, вам більше ніколи не доведеться вводити свої облікові дані. Мінусом такого підходу є те, що ваші паролі зберігаються в чіткому тексті у простому файлі у вашому домашньому каталозі.
Якщо ви використовуєте Mac, Git оснащений режимом "osxkeychain", який кешує облікові дані в захищеному брелоку, прикріпленому до вашого облікового запису системи. Цей метод зберігає облікові дані на диску, і вони ніколи не закінчуються, але вони зашифровані за тією ж системою, що зберігає сертифікати HTTPS та автоматичне заповнення Safari.
Якщо ви використовуєте Windows, ви можете встановити помічник під назвою "Git Credential Manager for Windows". Це аналогічно помічнику "osxkeychain", описаному вище, але він використовує Windows Credential Store для контролю конфіденційної інформації. Його можна знайти за адресою https://github.com/Microsoft/Git-Credential-Manager-for-Windows .
Ви можете вибрати один із цих методів, встановивши значення конфігурації Git:
$ git config --global credential.helper cache
$ git config --global credential.helper store