Git хранит побудило меня пароль
Я уже давно использую Git, но постоянные запросы на пароль начинают загонять меня на стену.
Я использую OSX и Github, и я настроил Git и мои SSH-ключи, как указано github's настройка страницы Git . Я также добавил ключ GitHub SSH в свой брелок Mac OSX, как упоминалось в страница ключевых фраз SSH GitHub . Мой открытый ключ зарегистрирован в Git.
тем не менее, каждый раз, когда я пытаюсь git тянуть, у меня есть ввести имя пользователя и пароль. Есть ли что-то другое, кроме ключа SSH, который мне нужно настроить для этого?
21 ответов
я думаю, что у вас может быть неправильный url-адрес git repo.
открыть .git/config
и найдите раздел [remote "origin"]. Убедитесь, что вы используете SSH
первый:
ssh://git@github.com/username/repo.git
и не https
или git
первый:
https://github.com/username/repo.git
git://github.com/username/repo.git
теперь вы можете проверить с помощью просто the SSH Key
вместо username
и password
.
[Edit:] если Git жалуется, что 'origin' has already been added
открыть редактировать url = "..."
часть после [remote origin]
as url = ssh://github/username/repo.git
настройка учетных данных.помощник!--10-->
на OS X (теперь macOS) запустите это в терминале
git config --global credential.helper osxkeychain
это позволяет git использовать брелок.приложение для хранения имени пользователя и пароля и получить пароль на закрытый ключ SSH с брелка.
для windows используйте:
git config --global credential.helper wincred
устранение неисправностей
если помощник учетных данных git настроен правильно, macOS сохраняет парольную фразу в связке ключей. Иногда соединение между ssh и паролями, хранящимися в связке ключей может сломаться. Запустить ssh-add -K
или ssh-add ~/.ssh/id_rsa
чтобы снова добавить ключ в keychain.
macOS 10.12 Sierra переходит на ssh
для macOS 10.12 Sierra ssh-add -K
нужно запускать после каждой перезагрузки. Чтобы избежать этого создать ~/.ssh/config
С этим контентом.
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
С ssh_config
man
страница на 10.12.2:
UseKeychain
в macOS указывает, должна ли система искать парольные фразы в связке ключей пользователя при попытке использовать определенный ключ. Когда парольная фраза предоставляется пользователем, этот параметр также указывает, следует ли хранить парольную фразу в связке ключей после проверки ее правильности. Аргумент должен быть 'да' или 'нет'. Значение по умолчанию - "нет".
Apple добавила Technote 2449, который объясняет, что получилось.
до macOS Sierra ssh представит диалог с запросом вашей парольной фразы и предложит возможность сохранить ее в связке ключей. Этот пользовательский интерфейс был устаревшим некоторое время назад и был удален.
Это случилось со мной, когда я обновился до macOS Sierra. Похоже, агент ssh был очищен после обновления.
$ ssh-add -L
The agent has no identities.
просто работает ssh-add
нашел мою существующую личность, ввел пароль и хорошо идти снова.
используйте это: заменить github.com с соответствующим именем хоста
git remote set-url origin git@github.com:user/repo.git
как уже говорили другие, вы можете установить пароль из кэша помощником. Я в основном просто хотел опубликовать ссылку для других платформ, а не только для mac. Я запускаю сервер linux, и это было полезно: https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux
для mac:
git credential-osxkeychain
Windows:
git config --global credential.helper wincred
Linux:
git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)
искать, кто просит у вас пароль. Это git или ваш SSH-агент?
в моем случае, каждый раз, когда я сделал git pull
Он спросил меня:
Enter passphrase for key '/work/username/.ssh/id_rsa':
поэтому я предположил, что это ГИТ просит пароль. Поэтому я продолжал искать решения, только чтобы позже понять, что мой SSH-агент закрылся. Который может быть исправлен как данный здесь.
Это была довольно глупая ошибка, которую я сделал, но разместив ее здесь, на всякий случай это помогает кто-то сэкономит время, чтобы не залаять не на то дерево, как я.
руководство по git в windows и Github с использованием SSH для push / pull http://nathanj.github.io/gitguide/tour.html
- скачать и установить putty
- установить переменную среды 'GIT_SSH' = ' path\to\plink.exe ' (в установленной папке putty) - очень важно!!!
- перезапустите проводник WINDOWS, чтобы переменные Env вступили в силу (не может только перезапустить командную строку)
- запустить puttygen.exe чтобы создать новый ключ, скопируйте открытый ключ в Github сайт
- Сохраните этот новый закрытый ключ в безопасном месте на диске (предпочтительно не dropbox)
- запустить Putty.exe и подключить SSH к github.co
- быстро добраться до папки автозагрузки, запустив "shell: startup". 8 Сделайте свой запуск закрытого ключа с помощью Windows через pageant. Создайте ярлык в папке автозагрузки с синтаксисом " path\to\pageant.ехе" "путь\к\закрытый ключ"
- нам не нужно устанавливать параметр "puttykeyfile" внутри .в git/config в нашей repos
- очень важно, что используется "SSH clone URL" Github, а не Https
в windows для git 1.7.9+ выполните следующую команду в командной строке, чтобы открыть файл конфигурации в текстовом редакторе:
git config --global --edit
затем в файл добавьте следующий блок, если его нет или отредактируйте его соответствующим образом
[credential "https://giturl.com"]
username = <user id>
helper = wincred
сохранить и закрыть файл. Вам нужно будет предоставить crendentials только один раз после вышеуказанного изменения.
git config credential.helper store
Примечание: хотя это удобно, Git будет хранить ваши учетные данные в открытом тексте в локальном файле (.git-учетные данные) в каталоге проекта (см. ниже для каталога "home"). Если вам это не нравится, удалите этот файл и переключитесь на использование опции кэша.
Если вы хотите, чтобы Git возобновлял запрос учетных данных каждый раз, когда ему нужно подключиться к удаленному репозиторию, вы можете запустить эту команду:
git config --unset credential.helper
для хранения паролей в .git-учетные данные в каталоге %HOME% в отличие от каталога проекта: используйте флаг --global
git config --global credential.helper store
используйте следующую команду, чтобы увеличить период ожидания, чтобы вы могли повторно ввести пароль на некоторое время
git config --global credential.helper 'cache --timeout 3600'
я использовал его для Bitbucket и Github он работает для обоих. Единственное, что тебе нужно сделать, это
3600
в секундах, увеличить его до любой степени, которую вы хотите.Я изменил его на 259200
что составляет около 30 дней. Таким образом, я повторно ввожу свой пароль каждые 30 дней или около того.
Я думаю, вы исправили свою проблему, но я не вижу решения здесь, которое помогло мне, так что вот оно.
введите в терминале:
echo "" > ~/.ssh/known_hosts
это опустошит ваш known_hosts
файл, и вам придется добавить каждый хост, который вы использовали и подключили, но это решило проблему.
ответ orkoden на использование брелка с git в вашем терминале был неполным и вызывает erros. Это то, что вам нужно сделать, чтобы сохранить имя пользователя и пароль, которые вы вводите в терминале в свой брелок:
curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain
sudo mv git-credential-osxkeychain /usr/local/bin
sudo chmod u+x /usr/local/bin/git-credential-osxkeychain
введите
git config --global credential.helper osxkeychain
Если вы уже сделали часть с конфигурацией git перед материалом curl, это не проблема, она будет работать
Как сказал static_rtti выше, измените
https://github.com/username/repo.git
git://github.com/username/repo.git
to
ssh://git@github.com/username/repo.git
Я сам изменил https в.файл git / config для ssh, но он все еще не работал. Тогда я понял, что вы должны изменить github.com к git@github.com - ... Хороший способ получить правильный url-адрес-перейти на страницу проекта и нажать на это
измените HTTPS на SSH, чтобы получить правильный URL
затем добавьте этот URL-адрес в файл конфигурации.
Шаг 1: Проверьте текущую конфигурацию
cat .git/config
вы получите:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/path_to_your_git.git
fetch = +refs/heads/*:refs/remotes/origin/*
[user]
name = your_username
email = your_email
[branch "master-staging"]
remote = origin
merge = refs/heads/master-staging
Шаг 2: Удалите удаленный источник
git remote rm origin
Шаг 3: Добавьте удаленный origin обратно с вашим именем пользователя и паролем
git remote add origin https://your_git_username:your_git_password@github.com/path_to_your_git.git
Я согласен с "codehugger" и с помощью инструкции "orkoden" это сработало для меня - на netbeans 7.3 - когда вы щелкните правой кнопкой мыши на файле и выберите контекстное меню-push - a 'push to remote' окно открыто - здесь есть 2 варианта
origin:https://github.com/myaccount/myproject.git/
https://github.com/myaccount/myproject.git/
Как вы можете видеть, что разница заключается в исходном параметре в url-адресе - вы не хотите выбирать эту опцию (1), вы хотите проверить опцию (2) и меня это вполне устраивает. Надеюсь, это кому-то поможет.
Навоз Le.
существуют различные виды аутентификации в зависимости от вашей конфигурации. Вот несколько:
-
git credential-osxkeychain
.если ваши учетные данные недействительны, удалите их:
git credential-osxkeychain erase
или:
printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase
поэтому git не будет просить у вас разрешения на брелок снова. Затем настройте его снова.
посмотреть: обновление учетных данных из Связки ключей OSX на GitHub
-
ваш SSH RSA ключ.
для этого вам нужно сравнить свой SSH-ключ с тем, что вы добавили, проверьте
ssh-add -L
/ssh-add -l
если вы используете правильную личность. -
ваша аутентификация HTTPS (если вы используете
https
вместоssh
протокола).использовать
~/.netrc
(%HOME%/_netrc
в Windows), чтобы предоставить свои учетные данные, напримерmachine stash1.mycompany.com login myusername password mypassword
подробнее: синхронизация с GitHub at SO
прежде чем вы сможете использовать свой ключ с github, выполните этот шаг в учебнике тестирование SSH-соединения:
$ ssh -T git@github.com
# Attempts to ssh to GitHub
Если вы используете Windows, и это внезапно начало происходить из ниоткуда на GitHub, это, вероятно, из-за недавнего GitHub отключение поддержки устаревших криптографических алгоритмов на 2018-02-22, в этом случае решение просто загрузить и установить последнюю версию либо полной Git для Windows или просто диспетчер учетных данных Git для Windows.
наличие опечатки в URL-адресе заставит git просить у вас имя пользователя и пароль, глупый git
протестировано на Linux Kali, git версии 2.7.0
попробуй:
git clone https://github.com/thisrepodoesntexists/doesntexists.git
Я чувствую, что ответ, предоставленный static_rtti, в некотором смысле хакерский. Не знаю, было ли это доступно раньше, но инструменты Git теперь предоставляют хранилище учетных данных.
Режим Кэширования
$ git config --global credential.helper cache
используйте режим " кэш " для хранения учетных данных в памяти в течение определенного периода времени. Ни один из паролей никогда не хранится на диске, и они удаляются из кэша через 15 минут.
Режим Магазина
$ git config --global credential.helper 'store --file ~/.my-credentials'
использовать режим "store"для сохранения учетных данных в текстовый файл на диске, и они никогда не истекают.
Я лично использовал режим магазина. Удалил мое РЕПО, клонировал его, а затем должен был ввести мои учетные данные один раз.
ссылка:https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
Если Git запрашивает имя пользователя и пароль каждый раз, когда вы пытаетесь взаимодействовать с GitHub, вы, вероятно, используете URL-адрес клона HTTPS для своего репозитория.
использование удаленного URL HTTPS имеет некоторые преимущества: его проще настроить, чем SSH, и обычно работает через строгие брандмауэры и прокси. Однако, он также предлагает ввести учетные данные GitHub каждый раз, когда вы тянуть или толкать хранилище.
вы можете настроить Git для хранения пароля для вас. для windows:
git config --global credential.helper wincred