Как сохранить имя пользователя и пароль в 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'
Вы можете редактировать ~/.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.
Косметическая конфигурация (документы ):
- Предпочтительно выбирать метод аутентификации на терминале, а не в графическом интерфейсе (меньше кликов)
- Всегда используйте метод браузера, а не спрашивайте каждый раз (даже меньше нажатий клавиш)
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
Я смог остановить его от запроса моей парольной фразы:
- Откройте конфигурацию, запустив:
vi ~/.ssh/config
- Добавлено следующее:
UseKeychain yes
- Сохранено и выход: нажмите 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
сохранить имя пользователя и пароль глобально
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"
и т.д., которые были очень хорошо объяснены в предыдущих ответах.
Мое решение:
- отключите глобальный помощник по учетным данным, на случай, если некоторые эксперименты помешают:)
> 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" и автоматически использует те же данные при последующих доступах.
Для пользователей 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
Однако, если вам не предлагается ввести учетные данные, выполните следующие действия:
- Откройте Панель управления из меню Пуск.
- Выберите учетные записи пользователей
- Выберите Управление учетными данными в меню слева.
- Удалите все учетные данные, связанные с 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 теперь изменились, и лучший метод также является самым простым. Подробности здесь
- Установите официальный клиент Github . Например, для Mac:
brew install gh
. - тип
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