Git постоянно просит у меня пароль - PullRequest
577 голосов
/ 15 октября 2011

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

Я использую Mac OS X и GitHub, и я настроилGit и мои SSH-ключи в соответствии с инструкциями GitHub на странице Настройка Git .

Я также добавил ключ github SSH в свою цепочку ключей Mac OS X, как упомянуто на странице парольных фраз ключа SSH GitHub .Мой открытый ключ зарегистрирован в Git.

Тем не менее, каждый раз, когда я пытаюсь Git pull, мне приходится вводить свое имя пользователя и пароль.Есть ли что-то кроме ключа SSH, который мне нужно настроить для этого?

Ответы [ 21 ]

737 голосов
/ 15 октября 2011

Я думаю, что у вас неправильный URL Git-репозитория.

Откройте .git/config и найдите раздел [удаленный «источник»]. Убедитесь, что вы используете SSH:

ssh://git@github.com/username/repo.git

Вы можете увидеть SSH URL на главной странице вашего репозитория, если вы нажмете Клонировать или загрузите и выберете ssh .

И НЕ https или git один:

https://github.com/username/repo.git
git://github.com/username/repo.git

Теперь вы можете подтвердить с помощью просто ключ SSH вместо имени пользователя и пароля.

Если Git жалуется, что 'origin' has already been added, откройте файл .config и отредактируйте деталь url = "..." после [remote origin] как url = ssh://github/username/repo.git

519 голосов
/ 11 июля 2012

Настройка credential.helper

На OS X (теперь macOS) запустите это в Terminal :

git config --global credential.helper osxkeychain

Это позволяет Git использовать файл Keychain.app для хранения имени пользователя и пароля и для получения ключевой фразы для вашего личного ключа SSH из цепочки для ключей.

Для Windows используйте:

git config --global credential.helper wincred

Устранение неполадок

Если помощник по учетным данным Git настроен правильно, macOS сохраняет ключевую фразу в цепочке для ключей. Иногда соединение между SSH и парольными фразами, хранящимися в цепочке для ключей , может разорваться. Запустите ssh-add -K или ssh-add ~/.ssh/id_rsa, чтобы снова добавить ключ в связку ключей.

macOS v10.12 (Sierra) меняется на ssh

Для macOS v10.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 отображало диалоговое окно с запросом вашей парольной фразы и предлагало сохранить ее в цепочке для ключей. Некоторое время назад этот пользовательский интерфейс устарел и был удален.

122 голосов
/ 21 сентября 2016

Это случилось со мной, когда я обновил MacOS до версии 10.12 (Sierra). Похоже, агент SSH был очищен при обновлении.

$ ssh-add -L
The agent has no identities.

Просто запустив ssh-add, обнаружил мою существующую личность. Я ввел пароль, и мне было хорошо идти снова.

63 голосов
/ 23 февраля 2013

Используйте это: замените github.com на соответствующее имя хоста

git remote set-url origin git@github.com:user/repo.git
41 голосов
/ 12 февраля 2015

Как уже говорили другие, вы можете установить помощник для кэширования паролей. Я просто хотел опубликовать ссылку для других платформ, а не только для Mac. Я использую сервер Linux, и это было полезно: Кэширование вашего пароля GitHub в Git

Для 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)
18 голосов
/ 23 августа 2017

Также поищите, кто спрашивает у вас пароль. Это Git или ваш агент SSH?

В моем случае, каждый раз, когда я делал git pull, он спрашивал меня:

Enter passphrase for key '/work/username/.ssh/id_rsa':

Так что я предположил, что это Гит просит парольную фразу. Поэтому я продолжал искать решения, но потом понял, что мой агент SSH отключился. Что можно исправить, используя eval $(ssh-agent) и ssh-add, как указано здесь .

Кроме того, ниже приведен небольшой фрагмент кода, который вы можете добавить в файл ~/.bashrc (или его эквивалент), чтобы убедиться, что ваш агент SSH запущен при входе в систему.

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

# Start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."

    # Spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
    echo succeeded
    chmod 600 ${SSH_ENV}
    . ${SSH_ENV} > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . ${SSH_ENV} > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

14 голосов
/ 13 июня 2017
git config credential.helper store

Примечание. Хотя это удобно, Git будет хранить ваши учетные данные в виде открытого текста в локальном файле (.git-credentials) в каталоге вашего проекта (см. Ниже каталог «home»).Если вам это не нравится, удалите этот файл и переключитесь на использование опции кэширования.

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

git config --unset credential.helper

Чтобы сохранить пароли в .git-credentials в вашем каталоге% HOME%, а не в каталоге проекта: используйте флаг --global

git config --global credential.helper store
9 голосов
/ 29 октября 2013

Руководство по Git в Windows и GitHub с использованием SSH для push / pull: Иллюстрированное руководство по Git в Windows

  1. Загрузите и установите PuTTY
  2. Установить переменную среды 'GIT_SSH' = 'path \ to \ plink.exe' (в папке с установленной замазкой) - очень важно !!!
  3. Перезапустите Windows Explorer , чтобы переменные среды вступили в силу (не может только перезапустить командную строку)
  4. Запустите puttygen.exe для создания нового ключа, скопируйте открытый ключ на сайт GitHub
  5. Сохраните этот новый закрытый ключ где-нибудь в безопасности на диске (предпочтительно не Dropbox )
  6. Запустите putty.exe и подключите SSH к github.co
  7. Быстро попасть в папку автозагрузки, запустив "shell: startup".
  8. Запустите ваш закрытый ключ с помощью Windows через Pageant. Создайте ярлык в папке «Автозагрузка» с синтаксисом «путь \ к \ pageant.exe», «путь \ к \ частному ключу»
  9. Нам не нужно устанавливать параметр 'puttykeyfile' внутри .git / config наших репозиториев
  10. Очень важно - это то, что «URL-адрес клонирования SSH» GitHub используется, а не HTTPS.
8 голосов
/ 13 апреля 2015

В Windows для Git 1.7.9+ выполните следующую команду в командной строке, чтобы открыть файл конфигурации в текстовом редакторе:

    git config --global --edit

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

    [credential "https://giturl.com"]
        username = <user id>
         helper = wincred

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

6 голосов
/ 23 сентября 2017

Используйте следующую команду, чтобы увеличить время ожидания, чтобы вы могли на некоторое время повторно ввести пароль

git config --global credential.helper 'cache --timeout 3600'

Я использовал его для Bitbucket и GitHub, он работает для обоих. Единственное, что вам нужно сделать, это 3600 в секундах. Увеличьте его до любой степени, которую вы хотите. Я изменил его на 259200, что составляет около 30 дней. Таким образом, я повторяю свой пароль каждые 30 дней или около того.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...