Как удалить ключевую фразу для ключа SSH без необходимости создания нового ключа? - PullRequest
813 голосов
/ 22 сентября 2008

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

Один из возможных способов - удалить мои ключи SSH и создать новые. Есть ли способ удалить фразу-пароль, сохраняя при этом те же ключи?

Ответы [ 3 ]

1564 голосов
/ 22 сентября 2008

Краткий ответ:

$ ssh-keygen -p

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

Если вы хотите сделать все это в одной строке без подсказок, сделайте:

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

Важно: Помните, что при выполнении команд они обычно записываются в ваш файл ~/.bash_history (или аналогичный) в виде простого текста, включая все предоставленные аргументы (т.е. парольные фразы в данном случае). Поэтому рекомендуется использовать первый вариант, если у вас нет особых причин поступать иначе. Обратите внимание, что вы все равно можете использовать -f keyfile без указания -P и -N, и что для ключевого файла по умолчанию установлено значение ~/.ssh/id_rsa, поэтому во многих случаях это даже не требуется.

Возможно, вы захотите использовать ssh-agent, который может на некоторое время кэшировать фразу-пароль. Последние версии gpg-agent также поддерживают протокол, используемый ssh-agent.

33 голосов
/ 22 сентября 2008

Возможно, вы захотите добавить следующее в ваш .bash_profile (или эквивалентный), который запускает ssh-agent при входе в систему.

if [ -f ~/.agent.env ] ; then
    . ~/.agent.env > /dev/null
    if ! kill -0 $SSH_AGENT_PID > /dev/null 2>&1; then
        echo "Stale agent file found. Spawning new agent… "
        eval `ssh-agent | tee ~/.agent.env`
        ssh-add
    fi 
else
    echo "Starting ssh-agent"
    eval `ssh-agent | tee ~/.agent.env`
    ssh-add
fi

В некоторых дистрибутивах Linux (Ubuntu, Debian) вы можете использовать:

ssh-copy-id -i ~/.ssh/id_dsa.pub username@host

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

Вы можете прочитать больше здесь и здесь .

17 голосов
/ 05 июня 2018

$ ssh-keygen -p работал для меня

Открыт git bash. Вставлено: $ ssh-keygen -p

Нажмите ввод для местоположения по умолчанию.

Введите старый пароль

Введите новый пароль - BLANK

Подтверждение новой парольной фразы - BLANK

БУМ боль от ввода пароля для git push прошла.

Спасибо!

...