Git продолжает спрашивать меня за мою кодовую фразу ssh key

Я использую Linux, и я создал ключи, как указано в учебнике github, зарегистрировал их в github и попытался использовать ssh-agent явно, но git продолжает спрашивать меня о своей кодовой фразе каждый раз, когда я пытаюсь сделать тянуть или нажать.

В чем может быть причина?

Ответ 1

Как только вы запустили агент SSH с помощью:

eval $(ssh-agent)
  • Вам нужно добавить к нему свой закрытый ключ:

    ssh-add
    

    Это спросит вас вашу парольную фразу только один раз, и тогда вам будет разрешено нажать, при условии, что вы загрузили открытый ключ в Github.

  • Чтобы сохранить ключ навсегда:

    ssh-add -K  
    

    Это будет сохраняться после закрытия и повторного открытия, сохраняя его в пользовательской цепочке ключей.

Ответ 2

Это произошло со мной после перезапуска с момента обновления с OS X El Capitan (10.11) до macOS Sierra (10.12). Решение ssh-add работало временно, но не сохранялось при повторном перезапуске.

Постоянным решением было отредактировать (или создать) ~/.ssh/config и включить параметр UseKeychain.

Host *
    UseKeychain yes

Связанный: macOS продолжает запрашивать мою кодовую фразу ssh, так как я обновился до Sierra

Ответ 3

Если вы пробовали ssh-add, и вам по-прежнему предлагается ввести вашу кодовую фразу, попробуйте использовать ssh-add -K. Это добавит вашу кодовую фразу в ваш брелок.

Обновление: если вы используете macOS Sierra, вам, скорее всего, понадобится сделать еще один шаг, поскольку вышеуказанное может больше не работать. Добавьте в свой ~/.ssh/config следующее:

Host *
  UseKeychain yes

Ответ 4

Я бы попробовал этот. Они говорят:

  • Начать GitBash
  • Отредактируйте файл ~/.bashrc
  • Добавьте в файл следующие строки

SSH_ENV=$HOME/.ssh/environment

# 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
  1. Сохранить и закрыть файл
  2. Закрыть GitBash
  3. Reopen GitBash
  4. Введите ключевую фразу

Ответ 5

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

Оказывается, у меня было несколько ключей, а Git сначала использовал неправильный. Это подскажет мне мою кодовую фразу, и я бы ввел ее, тогда Git будет использовать другой ключ, который будет работать (мне не нужно вводить кодовую фразу).

Я просто удалил ключ, который он использовал, чтобы запросить кодовую фразу и теперь она работает!

Ответ 6

Попробуйте добавить это к ~/.ssh/config:

Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa

Ответ 7

Похоже, что у вас могут возникнуть проблемы с самим SSH-агентом. Я бы попытался устранить эту проблему.

1) Вы сделали ssh-add, чтобы добавить свой ключ в SSH?

2) Закрываете ли вы окно терминала между приложениями, потому что если вы закроете окно, вам придется снова ввести пароль при его повторном открытии.

Ответ 9

Если вышеприведенные решения не работают для меня, нужно проверить, что на самом деле у вас есть открытый ключ (обычно id_rsa.pub). Это необычно, но это было причиной для меня.

Чтобы создать открытый ключ из вашего закрытого ключа:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

Ответ 10

Я пробую разные решения, но ничего не помогает. Но эти шаги (My GitBash SSH-среда всегда запрашивает мою кодовую фразу, что я могу сделать?) из швов Bitbucket.com хорошо работает:

Идея такова:

  • вы создаете файл ~/.bashrc

  • добавить script:

    SSH_ENV=$HOME/.ssh/environment
    
    # 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
    
  • перезапустить Bash