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

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

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

12 ответов

Решение

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

$ 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.

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

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

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

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

Введите новый пароль - ПУСТО

Подтвердите новый пароль - ПУСТО

БУМ боль от ввода парольной фразы для git push прошла.

Спасибо!

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

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

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

Чтобы изменить или удалить кодовую фразу, я часто считаю, что проще всего передать только p а также f flags, а затем позвольте системе предложить мне ввести парольные фразы:

ssh-keygen -p -f <name-of-private-key>

Например:

ssh-keygen -p -f id_rsa

Введите пустой пароль, если вы хотите удалить парольную фразу.

Пример запуска для удаления или изменения пароля выглядит примерно так:

ssh-keygen -p -f id_rsa
Enter old passphrase: 
Key has comment 'bcuser@pl1909'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

При добавлении ключевой фразы к ключу, у которого нет ключевой фразы, запуск выглядит примерно так:

ssh-keygen -p -f id_rsa
Key has comment 'charlie@elf-path'
Enter new passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved with the new passphrase.

На Mac вы можете сохранить кодовую фразу для своего закрытого ключа ssh в цепочке ключей, что делает ее использование прозрачным. Если вы вошли в систему, она доступна, когда вы вышли из системы, ваш пользователь root не может ее использовать. Удаление парольной фразы - плохая идея, потому что ее может использовать любой, у кого есть файл.

ssh-keygen -K

Добавьте это в ~/.ssh/config

UseKeychain yes

В Windows вы можете использовать PuttyGen для загрузки файла секретного ключа, удаления парольной фразы и перезаписи существующего файла секретного ключа.

В Windows для меня он продолжал говорить «id_ed25135: нет такого файла или каталога» при вводе вышеуказанных команд. Итак, я пошел в папку, скопировал путь в проводнике папок и добавил «\ id_ed25135» в конце.

Вот что я в итоге набрал и сработал:
ssh-keygen -p -f C:\Users\john\.ssh\id_ed25135

Это сработало. Потому что по какой-то причине в Cmder путь по умолчанию был примерно таким: C:\Users\capit/.ssh/id_ed25135 (некоторые из них были обратными: "\", а некоторые - прямыми: "/")

Для меня на Mac следующие шаги решили проблему.

1> откройте терминал, перейдите в каталог пользователей и введите команду ниже.

      ssh-keygen -p

2> Он спросит вас

Введите файл, в котором находится ключ (/Users/ваше имя пользователя/.ssh/id_rsa): укажите путь к файлу, который показан в круглых скобках.

3> Затем вас попросят ввести старую парольную фразу. Напишите свой старый пароль и войдите. При вводе парольной фразы терминал ничего не покажет.

4> Вас попросят ввести новую парольную фразу.

Введите новую парольную фразу (пусто, если парольная фраза отсутствует). Если вы не хотите сохранять парольную фразу, просто нажмите Enter.

5> Затем вас снова попросят подтвердить ту же фразу-пароль.

Введите ту же парольную фразу еще раз. Затем снова нажмите Enter.

6> Затем вы получите сообщение об успехе.

Ваша идентификация сохранена с новой парольной фразой.

Для Windows;

  1. откройте экран cmd, напишите это и нажмите Enter.

    ssh-keygen -p

  2. cmd запросит у вас старую парольную фразу. Напишите свой старый пароль и войдите. Вы не можете увидеть старую фразу-пароль, когда пишете ее.

  3. cmd запросит у вас новую парольную фразу и ее подтверждение. Вы можете оставить его пустым.

Поздравляю!!!

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

      ssh-add --apple-use-keychain ~/.ssh/id_rsa
Enter passphrase for /Users/{{user_name}}/.ssh/id_rsa:
Identity added: /Users/{{user_name}}/.ssh/id_rsa(/Users/{{user_name}}/.ssh/id_rsa)

Еще один способ сделать это:

 $ openssl rsa -in www.key -out new.key

Если вы используете Mac

  • Перейти в папку .ssh
  • обновить файл конфигурации, добавив «UseKeychain yes»
Другие вопросы по тегам