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

284

У меня есть пара открытых / закрытых ключей. Закрытый ключ защищен паролем, и шифрование может быть RSA или DSA. Эти ключи вы генерируете ssh-keygenи обычно храните ~/.ssh.

Я хотел бы изменить пароль закрытого ключа. Как мне это сделать, на стандартной оболочке Unix?

Кроме того, как я могу просто удалить пароль? Просто поменять его на пустое?

KCH
источник

Ответы:

372

Чтобы изменить кодовую фразу для вашего ключа DSA по умолчанию:

$ ssh-keygen -p -f ~/.ssh/id_dsa

затем укажите ваши старые и новые парольные фразы (дважды) в командной строке. (Используйте, ~/.ssh/id_rsaесли у вас есть ключ RSA.)

Больше деталей от man ssh-keygen:

[...]
SYNOPSIS
    ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment]
               [-f output_keyfile]
    ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
[...]
     -f filename
             Specifies the filename of the key file.
[...]
     -N new_passphrase
             Provides the new passphrase.

     -P passphrase
             Provides the (old) passphrase.

     -p      Requests changing the passphrase of a private key file instead of
             creating a new private key.  The program will prompt for the file
             containing the private key, for the old passphrase, and twice for
             the new passphrase.
[...]
Майк Мазур
источник
1
Это из справочной страницы, поставляемой с net-misc / openssh-5.2_p1-r2 в Gentoo Linux.
Майк Мазур
12
Кроме того, ради будущего ленивого человека, я бы изменил порядок: сначала быстрый ответ, потом страница руководства.
KCH
2
Я думаю, что ответ отличный, так как он показывает, где вы можете изменить пароль и где искать ответ. Я помог многим людям настроить ssh-ключи, и для них на самом деле вспомнить, какой инструмент они использовали, не всегда легко. Кроме того, поиск ответа в сети является первым вариантом для многих ...
sastorsl
5
Если ваши машины используют OpenSSH> = 6.5, вы должны использовать -oопцию, чтобы включить новый формат закрытого ключа (bcrypt как KDF по умолчанию). В более старых версиях OpenSSH используйте PKCS # 8 для более безопасных файлов закрытых ключей .
Куинн Комендант
2
@FranciscoLuz команда в моем ответе относится к ключу DSA. Если у вас есть ключ RSA, значит, ваша команда верна. Я добавил объявление к ответу, чтобы решить эту проблему.
Майк Мазур
-9

Удалите ваши открытые / закрытые ключи SSH:

rm ~/.ssh/id_rsa*

Восстановите пару ключей, выбрав новую фразу-пароль:

ssh-keygen -t rsa -f ~/.ssh/id_rsa

Добавьте только что созданный закрытый ключ в цепочку ключей OS X, чтобы сохранить фразу-пароль и автоматически разблокировать ее:

ssh-add -K ~/.ssh/id_rsa

Скопируйте открытый ключ в буфер обмена OS X для добавления в веб-сервисы, такие как GitHub и т. Д.

cat ~/.ssh/id_rsa.pub | pbcopy

Добавьте созданный вами открытый ключ в ~/.ssh/authorized_keysфайл удаленного сервера. Убедитесь в правильности разрешений для удаленной ~/.sshпапки (700) и ~/.ssh/authorized_keys(600). Вы можете захотеть исследовать использование, ssh-copy-idчтобы облегчить этот процесс.

gauta
источник
3
Афиша спрашивала, как изменить ключевую фразу на своем ключе, не выбрасывать ее и сгенерировать новую; и они никогда не упоминали OS X.
musicinmybrain
2
Я бы проголосовал за этот ответ, если бы не эти три вопроса: 1. Удаление старых ключей не является хорошим началом, так как они понадобятся при обновлении authorized_keys. 2. Вы не упомянули, почему создание новых ключей лучше, чем изменение паролей на старых. 3. Вы делаете предположения об ОС, что не поддерживается вопросом.
Касперд