Не удается разблокировать защищенный паролем ключ SSH в OS X Mavericks


18

Я только что обновился до OSX 10.9, и при попытке установить соединение SSH с аутентификацией с открытым ключом появляется запрос на ввод пароля моего ключа SSH.

Сначала я подумал, что обновление заставило цепочку для ключей забыть некоторые пароли, поэтому я снова ввел свой. Очевидно, это не было причиной, потому что подсказка продолжала появляться.

Я сначала, хотя, что я могу использовать неправильный пароль, но пока следующая команда:

$ ssh-keygen -vvv -y -f id_rsa >| id_rsa.pub
debug3: Incorrect RSA1 identifier
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase:
debug3: Incorrect RSA1 identifier
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
load failed

...не работает! Если я попытаюсь использовать openssl:

$ openssl rsa -in id_rsa -text
Enter pass phrase for id_rsa:
Private-Key: (2048 bit)
modulus:
    00:...

мой закрытый ключ правильно расшифрован и вся информация напечатана.

Что случилось с обновлением до Маверикс? Как я могу вернуть свой закрытый ключ в работоспособное состояние?

Ответы:


22

Видимо, закрытый ключ, который я использовал на своей машине, был старым. Мой ключ не содержит информацию о шифровании, добавленную в файл закрытого ключа, если я сгенерирую новый:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-...

Чтобы решить проблему, я расшифровал ключ с помощью openssl:

$ cd ~/.ssh
$ cp id_rsa id_rsa.bck
$ openssl rsa -in id_rsa -out id_rsa

... а затем повторно зашифровал его:

$ openssl rsa -in id_rsa -aes256 -out id_rsa
$ chmod 0600 id_rsa

И на всякий случай восстановите также открытый ключ:

$ ssh-keygen -y -f id_rsa > id_rsa.pub

3

У меня такая же проблема. Я решил это, переместив .ssh / authorized_keys2 в .ssh / authorized_keys.

Файл / etc / sshd_config явно содержит эти строки:

\# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
\# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile  .ssh/authorized_keys

Это отличается от предыдущей версии macosx?


1
Эта проблема тоже другая. В моем случае я не смог расшифровать свой закрытый ключ.
GaretJax

2

Та же проблема здесь, мои ключи показывают то же самое поведение.

Я отследил проблему до этого поста в блоге. Я изменил свои ssh-ключи так, как это было описано в этой статье, чтобы повысить безопасность, и это сработало без Mountain Lion. http://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html

Я предполагаю, что Apple что-то изменила с openssh, и «новая» версия не способна читать более новый формат PKCS # 8.

Моя версия Mavericks OpenSSH: OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

У меня нет другого Mac, поэтому я не могу сравнить его с версией Mountain Lion.


/usr/bin/ssh -Vпечатает OpenSSH_5.9p1, OpenSSL 0.9.8r 8 Feb 2011на моей 10.8.0 ВМ.
Lri

Интересно, если у вас есть время, можете ли вы проверить, что показывает "ssh-keygen -vvv -y -f id_rsa", если вы используете ключ pkcs # 8?
tripplet

Мой ключ pkcs # 8, полученный по той же ссылке, показывает это: gist.github.com/cbowns/7359383/raw/…
cbowns

2

Использование brew openssl и openssh устраняет проблему PCKS # 8 на Mavericks.

brew update
brew install openssl
brew link openssl --force
brew install openssh

# confirm correct bins are being used
# both should be located in /usr/local/bin
which openssl
which openssh

# add key back to keychain
ssh-add ~/.ssh/id_rsa

Я не уверен, что принудительное связывание openssl нарушает что-либо на Mavricks. До сих пор я не заметил никаких проблем.


0

Я смог решить эту проблему, просто выполнив следующие действия:

cd ~/.ssh
mv known_hosts known_hosts.old

Теперь иди и подключиться. Когда он задает стандартный вопрос, чтобы добавить тип отпечатка пальца да.


Но не забудьте проверить отпечаток пальца!
зигг

1
Это другая проблема, чем я спрашивал. Известный файл hosts не имеет ничего общего с возникшей здесь проблемой (расшифровка закрытого ключа)
GaretJax

0

Случилось, чтобы получить эту проблему. Пытаясь указать шифр, я смог заставить его работать хорошо.

В Linux, когда вы пытаетесь сгенерировать пары ключей, используйте это:

ssh-keygen -t rsa -Z aes256

Открытый ключ теперь с шифром aes256 может быть правильно распознан ssh на OSX (здесь у меня 10.12.1).


0

Вы можете преобразовать ключ PuTTY в ключ OpenSSL OS X:

puttygen putty.ppk -O private-openssh -o osx.key

Введите пароль и все готово.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.