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://[email protected]/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 [email protected]: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

  1. скачать и установить putty
  2. установить переменную среды 'GIT_SSH' = ' path\to\plink.exe ' (в установленной папке putty) - очень важно!!!
  3. перезапустите проводник WINDOWS, чтобы переменные Env вступили в силу (не может только перезапустить командную строку)
  4. запустить puttygen.exe чтобы создать новый ключ, скопируйте открытый ключ в Github сайт
  5. Сохраните этот новый закрытый ключ в безопасном месте на диске (предпочтительно не dropbox)
  6. запустить Putty.exe и подключить SSH к github.co
  7. быстро добраться до папки автозагрузки, запустив "shell: startup". 8 Сделайте свой запуск закрытого ключа с помощью Windows через pageant. Создайте ярлык в папке автозагрузки с синтаксисом " path\to\pageant.ехе" "путь\к\закрытый ключ"
  8. нам не нужно устанавливать параметр "puttykeyfile" внутри .в git/config в нашей repos
  9. очень важно, что используется "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://[email protected]/username/repo.git

Я сам изменил https в.файл git / config для ssh, но он все еще не работал. Тогда я понял, что вы должны изменить github.com к [email protected] - ... Хороший способ получить правильный 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:[email protected]/path_to_your_git.git

Я согласен с "codehugger" и с помощью инструкции "orkoden" это сработало для меня - на netbeans 7.3 - когда вы щелкните правой кнопкой мыши на файле и выберите контекстное меню-push - a 'push to remote' окно открыто - здесь есть 2 варианта

  1. origin:https://github.com/myaccount/myproject.git/

  2. https://github.com/myaccount/myproject.git/

Как вы можете видеть, что разница заключается в исходном параметре в url-адресе - вы не хотите выбирать эту опцию (1), вы хотите проверить опцию (2) и меня это вполне устраивает. Надеюсь, это кому-то поможет.

Навоз Le.


существуют различные виды аутентификации в зависимости от вашей конфигурации. Вот несколько:

  1. git credential-osxkeychain.

    если ваши учетные данные недействительны, удалите их:

    git credential-osxkeychain erase
    

    или:

    printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase
    

    поэтому git не будет просить у вас разрешения на брелок снова. Затем настройте его снова.

    посмотреть: обновление учетных данных из Связки ключей OSX на GitHub

  2. ваш SSH RSA ключ.

    для этого вам нужно сравнить свой SSH-ключ с тем, что вы добавили, проверьте ssh-add -L/ssh-add -l если вы используете правильную личность.

  3. ваша аутентификация HTTPS (если вы используете https вместо ssh протокола).

    использовать ~/.netrc (%HOME%/_netrc в Windows), чтобы предоставить свои учетные данные, например

    machine stash1.mycompany.com
    login myusername 
    password mypassword
    

    подробнее: синхронизация с GitHub at SO


прежде чем вы сможете использовать свой ключ с github, выполните этот шаг в учебнике тестирование SSH-соединения:

$ ssh -T [email protected]
# 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