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

495

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

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

  • 9
    Я думаю, что строгий ответ на самом деле является ответом Торстена Марека. Трюк ssh-agent может быть тем, что вы ищете, но это ответ на другой вопрос.
  • 8
    Хотя это хороший вопрос, он может быть лучше подходит для superuser.com.
Показать ещё 4 комментария
Теги:
ssh
passwords
openssh
passphrase

2 ответа

1046
Лучший ответ

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

$ ssh-keygen -p

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

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

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

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

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

  • 430
    Чтобы быть точным: вы можете просто запустить ssh-keygen -p в терминале. Затем вам будет предложено ввести ключевой файл (по умолчанию это правильный файл для меня, ~/.ssh/id_rsa ), старую фразу-пароль (введите то, что у вас есть сейчас) и новую фразу-пароль (ничего не вводить).
  • 25
    Ex. : ssh-keygen -p -P oldpassphrase -N "" -f ~/.ssh/id_rsa
Показать ещё 9 комментариев
27

Возможно, вы захотите добавить следующее в свой .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

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

Здесь вы можете прочитать здесь и здесь.

  • 7
    Разве современный дистрибутив не запускает ssh-agent из коробки?
  • 0
    В некоторых дистрибутивах Linux (Ubuntu, Debian) вы можете использовать: ssh-copy-id -i ~ / .ssh / id_dsa.pub username @ host Если, конечно, у вас есть доступ таким образом. И хотя это с 2008 года, возможно, его следует отредактировать так, чтобы он ссылался на id_rsa.pub (да, я мог бы отредактировать его, но я не чувствую себя комфортно, делая это для чужих работ - и особенно это касается чего-то подобного).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню