Как сохранить имя пользователя и пароль в git

Я хочу использовать push и pull автоматически в GitExtension, не вводя каждый раз мой пароль и пароль.

Так как же сохранить свои учетные данные в git?

35 ответов

Решение
git config credential.helper store

затем

git pull

укажите имя пользователя и пароль, и эти подробности будут запомнены позже. Учетные данные хранятся в файле на диске с правами доступа "только для чтения / записи", но в открытом виде.

если вы хотите сменить пароль позже

git pull

потерпит неудачу, потому что это не удалось, он удаляет нарушающего пользователя + пароль из файла.git-credentials, поэтому теперь запустите

git pull

введите новый пароль, и он будет работать как раньше.

Вы можете использовать git config включить хранилище учетных данных в git.

git config --global credential.helper store

При запуске этой команды при первом извлечении или удалении из удаленного репозитория вас спросят об имени пользователя и пароле.

После этого для последующей связи с удаленным хранилищем вам не нужно указывать имя пользователя и пароль.

Формат хранения .git-credentials файл, хранящийся в виде открытого текста.

Также вы можете использовать других помощников для git config credential.helperа именно кеш памяти:

git config credential.helper cache <timout>

который принимает необязательный timeout parameterопределяя, как долго должен работать его демон и default значение этого 900 seconds (15 minutes).


ВНИМАНИЕ: Если вы используете этот метод, пароли вашей учетной записи git будут сохранены в plaintext формат, в global .gitconfig fileнапример, в Linux это будет /home/[username]/.gitconfig

Если это нежелательно для вас, используйте ssh key вместо ваших аккаунтов.

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

git config --global user.name "your username"

git config --global user.password "your password"

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

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

# 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'

Из справки GitHub

Вы можете редактировать ~/.gitconfig файл для хранения ваших учетных данных

sudo nano ~/.gitconfig

Который уже должен иметь

[user]
        email = your@email.com
        user = gitUSER

Вы должны добавить внизу этого файла.

[credential]
        helper = store

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

ИСПОЛЬЗУЙТЕ ТОЛЬКО ЭТОТ ВАРИАНТ В ЛИЧНОМ КОМПЬЮТЕРЕ.

Тогда, когда вы тянете | клонировать | введите ваш пароль git, в общем, пароль будет сохранен в ~/.git-credentials в формате

https://GITUSER:GITPASSWORD@DOMAIN.XXX

ГДЕ DOMAIN.XXX МОЖЕТ БЫТЬ GITHUB.COM | BITBUCKET.ORG | ДРУГОЙ

См документы

Изучив десятки SO-сообщений, блогов и т. Д., Я опробовал каждый метод, и это то, что я придумал. Это охватывает ВСЕ.

The Vanilla DevOps Git Учетные данные и частные пакеты

Это все способы и инструменты, с помощью которых вы можете безопасно аутентифицировать git для клонирования репозитория без интерактивного запроса пароля.

  • Открытые ключи SSH
    • SSH_ASKPASS
  • Токены доступа к API
    • GIT_ASKPASS
    • .gitconfig вместо
    • .gitconfig [учетные данные]
    • .git-учетные
    • .netrc
  • Частные пакеты (бесплатно)
    • node / npm package.json
    • python / pip / eggs needs.txt
    • рубиновые камни Gemfile
    • голанг го.мод

Серебряная пуля

Хотите Just Works™? Это волшебная серебряная пуля.

Получите свой токен доступа (см. Раздел в чит-листе, если вам нужны инструкции 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 Вместо", из таблицы.

Безопасность

Смотрите раздел "Безопасность" в чит-листе.

Я думаю, что безопаснее кешировать учетные данные, чем хранить вечно:

git config credential.helper 'cache' --timeout=10800

теперь вы можете ввести свое имя пользователя и пароль и продолжать использовать git в течение следующих 3 часов.

красиво и безопасно.

Тайм-аут указывается в секундах (в примере - 3 часа).

Для глобальной настройки откройте терминал (из любого места), запустите следующее:

  git config --global user.name "your username"
  git config --global user.password "your password"

Таким образом, любая локальная версия git-репо, имеющаяся на вашем компьютере, будет использовать эту информацию.

Вы можете индивидуально настроить для каждого репо, выполнив:

  • открыть терминал в папке репо.
  • запустить следующее:

    git config user.name "your username"
    git config user.password "your password"
    

Это влияет только на эту папку (потому что ваша конфигурация является локальной).

Просто введите свои учетные данные в 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-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-credential-store - Помощник для хранения учетных данных на диске

Храните имя пользователя и пароль в.git-credentials

.git-credentials где ваши имя пользователя и пароль хранятся при запуске git config --global credential.helper store, что предлагают другие ответы, а затем введите свое имя пользователя и пароль:

https://${username}:${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 проститутка в докер-хабе.

Пример этого можно увидеть здесь в stackru.

Помимо редактирования ~/.gitconfig файл.

Примечание, чтобы всегда использовать одинарные кавычки:

git config --global user.name 'your username'
git config --global user.password 'your password'

Ваше имя пользователя и пароль могут использовать некоторые символы, которые взломают ваш пароль, если вы используете двойные кавычки.

По состоянию на 2021 год существует безопасное и удобное кроссплатформенное решение для удаленных HTTPS-доступов. Больше не нужно вводить пароли! Больше никаких SSH-ключей! Никаких токенов личного доступа!

Установите Git Credential Manager , разработанный GitHub (загрузки ). Он поддерживает аутентификацию OAuth в браузере без пароля для GitHub, BitBucket, Azure и GitLab. Это означает, что вы можете включить двухфакторную аутентификацию на GitHub и других платформах, что значительно повысит безопасность ваших учетных записей.

При нажатии вам предлагается выбор методов аутентификации:

      > git push
Select an authentication method for 'https://github.com/':
  1. Web browser (default)
  2. Device code
  3. Personal access token
option (enter for default): 1
info: please complete authentication in your browser...

В Linux требуется небольшая настройка . Следующие учетные данные кэшируются в памяти на 20 часов, поэтому вам нужно проходить аутентификацию не чаще одного раза в день.

      git-credential-manager-core configure
git config --global credential.credentialStore cache
git config --global credential.cacheoptions=--timeout 72000

Опытные пользователи, знакомые с gnome-keyring или KWallet, могут предпочесть изменить хранилище учетных данных на libsecret.

Косметическая конфигурация (документы ):

  1. Предпочтительно выбирать метод аутентификации на терминале, а не в графическом интерфейсе (меньше кликов)
  2. Всегда используйте метод браузера, а не спрашивайте каждый раз (даже меньше нажатий клавиш)
      git config --global credential.guiPrompt false
git config --global credential.gitHubAuthModes browser

Снимок экрана авторизации GCM для доступа к вашей учетной записи GitHub (виден только в первый раз):

Скриншот последующей аутентификации (просматривается один раз в день). Нет необходимости в кликах.

Вы будете более защищены, если будете использовать аутентификацию SSH, чем аутентификация по имени пользователя / паролю.

Если вы используете Mac, аутентификация клиента SSH интегрирована в связку ключей MacOS. Создав ключ SSH, введите в свой терминал:

ssh-add -K ~/.ssh/id_rsa

Это добавит закрытый ключ SSH в связку ключей MacOS. Клиент git будет использовать ssh при подключении к удаленному серверу. Пока вы зарегистрируете свой открытый ключ ssh на сервере, все будет в порядке.

Просто используйте

git config --global credential.helper store

и выполните git pull, он запросит имя пользователя и пароль, с этого момента он не будет предлагать никаких запросов для имени пользователя и пароля, он будет хранить данные

Чтобы сохранить свое имя пользователя и пароль пользователя в учетной записи github, просто выполните эти команды последовательно.

      git config --global user.name "userName"
git config --global user.email "usernam@gmail.com"
git config --global user.password "userPassword"
git config --global credential.helper store
git config --list --show-origin

Затем сгенерируйте ключ, используя следующую команду:

      ssh-keygen -t rsa -C "useremail@gmail.com"

Примечание . Скопируйте расположение файла, в котором создается файл id_rsa. Затем перейдите в это расположение файла -> откройте gitbash или командную строку -> Запустите команду -cat id_rsa.pub

Ключ SSH будет отображен, скопируйте этот ключ SSH и вставьте его в свою учетную запись gihub/gitlab.

Ни один из ответов выше не работал для меня. Я продолжал получать следующее каждый раз, когда хотел fetch или же pull:

Enter passphrase for key '/Users/myusername/.ssh/id_rsa':


Для Mac

Я смог остановить его от запроса моей парольной фразы:

  1. Откройте конфигурацию, запустив: vi ~/.ssh/config
  2. Добавлено следующее: UseKeychain yes
  3. Сохранено и выход: нажмите Esc, затем введите :wq!

Для Windows

Я смог заставить его работать, используя информацию в этом стеке обмена: https://unix.stackexchange.com/a/12201/348665

В этом случае вам понадобится помощник по учетным данным git, который скажет git запомнить ваш пароль и имя пользователя GitHub с помощью следующей командной строки:

git config --global credential.helper wincred 

и если вы используете репо с использованием ключа SSH, тогда вам нужен ключ SSH для аутентификации.

Проверьте официальную документацию git:

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

К счастью, в Git есть система учетных данных, которая может в этом помочь. В Git есть несколько вариантов:

  • По умолчанию вообще не кэшируется. При каждом подключении вам будет предложено ввести имя пользователя и пароль.

  • В режиме "кэш" учетные данные хранятся в памяти в течение определенного периода времени. Ни один из паролей никогда не сохраняется на диске, и они удаляются из кеша через 15 минут.

  • В режиме "хранения" учетные данные сохраняются в текстовом файле на диске, и срок их действия никогда не истекает. Это означает, что до тех пор, пока вы не измените свой пароль для хоста Git, вам больше никогда не придется вводить свои учетные данные. Обратной стороной этого подхода является то, что ваши пароли хранятся в открытом виде в простом файле в вашем домашнем каталоге.

  • Если вы используете Mac, Git поставляется с режимом "osxkeychain", который кэширует учетные данные в защищенной связке ключей, которая привязана к вашей системной учетной записи. Этот метод хранит учетные данные на диске, и срок их действия никогда не истекает, но они зашифрованы той же системой, которая хранит сертификаты HTTPS и автозаполнение Safari.

  • Если вы используете Windows, вы можете установить помощник под названием "Git Credential Manager для Windows". Он похож на помощника "osxkeychain", описанного выше, но использует хранилище учетных данных Windows для управления конфиденциальной информацией. Его можно найти по адресу https://github.com/Microsoft/Git-Credential-Manager-for-Windows.

Вы можете выбрать один из этих методов, установив значение конфигурации Git:

$ git config --global credential.helper cache

$ git config --global credential.helper store

https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

сохранить имя пользователя и пароль глобально

      git config --global user.name "fname lname"
git config --global user.email "example@gmail.com"
git config --global user.password "secret"

Получите конкретную настройку,

      git config --global --get user.name
git config --global --get user.email
git config --global --get user.password

Получение всех настроек git

      git config --list --show-origin

Если безопасность не является проблемой для клиента git, отредактируйте URL-адрес следующим образом:

      git remote set-url origin https://${access_token}@github.com/${someone}/${somerepo}.git

Я лично не жалую git config с участием global домен, так как это испортит настройки бизнеса и сообщества.

Полностью прочитав ветку и поэкспериментировав с большинством ответов на этот вопрос, я в конце концов нашел процедуру, которая мне подходит. Я хочу поделиться им на случай, если кому-то придется иметь дело со сложным вариантом использования, но он все еще не хочет проходить через полный поток и справочные страницы gitcredentials, gitcredentials-store и т. Д., Как я.

Найдите ниже процедуру, которую я предлагаю, ЕСЛИ вам (как и мне) приходится иметь дело с несколькими репозиториями от нескольких поставщиков (GitLab, GitHub, Bitbucket и т. Д.), Используя несколько разных комбинаций имени пользователя и пароля. Если вместо этого у вас есть только одна учетная запись для работы, возможно, вам лучше использоватьgit config --global credential.helper store или git config --global user.name "your username" и т.д., которые были очень хорошо объяснены в предыдущих ответах.

Мое решение:

  1. отключите глобальный помощник по учетным данным, на случай, если некоторые эксперименты помешают:)

> git config --global --unset credentials.helper

  1. перейдите в корневой каталог вашего репо и отключите локальный помощник по учетным данным (при необходимости)

> cd /path/to/my/repo

> git config --unset credential.helper

  1. создать файл для хранения учетных данных вашего репо в

> git config credential.helper 'store --file ~/.git_repo_credentials'

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

> git config credential.helper store

  1. установите ваше имя пользователя

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" и автоматически использует те же данные при последующих доступах.

Для пользователей Windows посмотрите файл.gitconfig и проверьте, что было настроено для помощника по учетным данным, если у вас есть следующее...

[учетные данные "helperselector"] selected = wincred

вы найдете учетные данные в диспетчере учетных данных Windows.

Там вы можете редактировать учетные данные.

РЕДАКТИРОВАТЬ: Wincred устарел, см...

https://github.com/git-for-windows/git-sdk-64/tree/main/mingw64/doc/git-credential-manager

В качестве альтернативы вы можете перенастроить git для использования встроенного диспетчера учетных данных GIT...

       git config --global credential.helper manager

Из комментария rifrol о Linux 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 Credential Manager в Windows...

git config -l должен показать:

credential.helper=manager

Однако, если вам не предлагается ввести учетные данные, выполните следующие действия:

  1. Откройте Панель управления из меню Пуск.
  2. Выберите учетные записи пользователей
  3. Выберите Управление учетными данными в меню слева.
  4. Удалите все учетные данные, связанные с Git или GitHub

Также убедитесь, что вы не установили HTTP_PROXY, HTTPS_PROXY, NO_PROXY переменные среды, если у вас есть прокси и ваш сервер Git находится во внутренней сети.

Вы также можете протестировать Git fetch/push/pull, используя git-gui который ссылается на двоичные файлы диспетчера учетных данных в C:\Users\<username>\AppData\Local\Programs\Git\mingw64\libexec\git-core

Рекомендации GitHub теперь изменились, и лучший метод также является самым простым. Подробности здесь

  1. Установите официальный клиент Github . Например, для Mac: brew install gh.
  2. тип gh auth login в своем терминале и следуйте инструкциям.

Двухфакторная аутентификация изменила способ аутентификации пользователей на веб-сайтах, но Git по-прежнему предполагает, что пользователи могут вводить пароль из памяти.

Представляем git-credential-oauth: помощник учетных данных Git, который безопасно аутентифицирует GitHub, GitLab, BitBucket и другие подделки с использованием OAuth.

Больше никаких паролей! Никаких токенов личного доступа! Больше никаких SSH-ключей!

При первом нажатии помощник откроет окно браузера для аутентификации. Последующие нажатия в течение тайм-аута кэша не требуют взаимодействия.

Установить с https://github.com/hickford/git-credential-oauth/releases/

Настроить с помощью:

      git config --global --unset-all credential.helper
git config --global --add credential.helper "cache --timeout 7200" # two hours
git config --global --add credential.helper oauth

Для пользователей Windows этот способ будет работать

Примечание. Если у вас включена двухфакторная аутентификация для GitHub, отключите ее на время.

  • Шаг 01

Goto Control Panel -> User Accounts -> Credential Manager -> Windows Credentials

  • Шаг 02

Goto Generic Credentials section -> Add a generic credential

  • Шаг 03 - Заполните поля

Internet or network address : git.https://github.com
User name : your github username
Password : your github username

А теперь нажмите ОК. Это сохранит пароль и имя пользователя вашей учетной записи GitHub на вашем локальном компьютере.

git config --global user.name "ваше имя пользователя"

git config --global user.password "ваш пароль"

проверять

git config --list

Ваш вопрос:

Я хочу автоматически использовать push и pull в Git Extensions, Sourcetree или любом другом графическом интерфейсе Git без ввода имени пользователя и пароля в приглашении каждый раз.
Итак, как я могу сохранить свои учетные данные в Git?

Если вы находитесь в github или других провайдерах, я бы рекомендовал не сохранять их в Git, например~/.git-credentialsно относитесь к ним как к зашифрованным секретам , как и следует.

Поместите учетные данные в следующий формат:

https://your_user_name:your_token@github.com/your_user_name/your_repo_name.git

Поместите это как зашифрованные секреты, такие как secrets.REPOSITORY:

Затем вы можете использовать его для клонирования общедоступных или частных репозиториев вместе с его подмодулями, а также для автоматического выполнения push и pull.

      # put the credentials in a variable
export REPOSITORY=${{ secrets.REPOSITORY }}

# git clone public or private repos
git clone --recurse-submodules -j8 ${REPOSITORY}

# git pull will do automatic
cd /path/to/the/repo
git pull

# git push to a branch in the repo
git add . && \
  git commit -m "Action from ${GITHUB_SHA}" && \
  git push --force $REPOSITORY master:$BRANCH
Другие вопросы по тегам