Я хочу использовать push и pull автоматически в GitExtension , не вводя каждый раз мой пароль и пароль.
Так как я могу сохранить свои учетные данные в git?
Я хочу использовать push и 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
ГДЕ DOMAIN.XXX МОЖЕТ БЫТЬ GITHUB.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-репо, имеющаяся на вашем компьютере, будет использовать эту информацию.
Вы можете индивидуально настроить для каждого репо, выполнив:
запустите следующее:
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-credential-store - Помощник для хранения учетных данных на диске
Вы будете более защищены, если будете использовать аутентификацию SSH, чем аутентификация по имени пользователя / паролю.
Если вы используете Mac, аутентификация клиента SSH интегрирована в связку ключей MacOS. Создав ключ SSH, введите в свой терминал:
ssh-add -K ~/.ssh/id_rsa
Это добавит закрытый ключ SSH в цепочку ключей MacOS. Клиент git будет использовать ssh при подключении к удаленному серверу. Пока вы зарегистрируете свой открытый ключ ssh на сервере, все будет в порядке.
SSH
. Используя HTTP-аутентификацию, тот, кто украл учетные данные, будет иметь доступ только к GitHub/GitLab
. Также токены предназначены для ограниченной жизни.
Изучив десятки SO-сообщений, блогов и т. Д., Я опробовал каждый метод, и это то, что я придумал. Это охватывает ВСЕ.
Это все способы и инструменты, с помощью которых вы можете безопасно аутентифицировать git для клонирования репозитория без интерактивного запроса пароля .
Хотите 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 --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
Я смог заставить его работать, используя информацию в этом стеке обмена: 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
означает, что параметры конфигурации сохранены для проекта или для пользователя ОС.
просто используйте
git config --global credential.helper store
и сделайте git pull , он запросит имя пользователя и пароль, с этого момента он не будет предоставлять никаких подсказок для имени пользователя и пароля, он будет хранить детали
.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 для 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