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
- Сохранить и закрыть файл
- Закрыть GitBash
- Reopen GitBash
- Введите ключевую фразу
Ответ 5
У меня была аналогичная проблема, но другие ответы не исправили мою проблему. Я думал, что буду идти вперед и публиковать это на всякий случай, если у кого-то есть такая жуткая установка, как я.
Оказывается, у меня было несколько ключей, а Git сначала использовал неправильный. Это подскажет мне мою кодовую фразу, и я бы ввел ее, тогда Git будет использовать другой ключ, который будет работать (мне не нужно вводить кодовую фразу).
Я просто удалил ключ, который он использовал, чтобы запросить кодовую фразу и теперь она работает!
Ответ 6
Попробуйте добавить это к ~/.ssh/config:
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Ответ 7
Похоже, что у вас могут возникнуть проблемы с самим SSH-агентом. Я бы попытался устранить эту проблему.
1) Вы сделали ssh-add, чтобы добавить свой ключ в SSH?
2) Закрываете ли вы окно терминала между приложениями, потому что если вы закроете окно, вам придется снова ввести пароль при его повторном открытии.
Ответ 8
Что работало для меня в Windows (я клонировал код из репо 1-го):
eval $(ssh-agent)
ssh-add
git pull
и в это время он спросил меня в последний раз для моей кодовой фразы
Кредиты: решение было принято из
https://unix.stackexchange.com/questions/12195/how-to-avoid-being-asked-passphrase-each-time-i-push-to-bitbucket
Ответ 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