Как удалить ключевую фразу для ключа 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;
откройте экран cmd, напишите это и нажмите Enter.
ssh-keygen -p
cmd запросит у вас старую парольную фразу. Напишите свой старый пароль и войдите. Вы не можете увидеть старую фразу-пароль, когда пишете ее.
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»