Не удается разблокировать защищенный паролем ключ 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:...

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

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

GaretJax
источник

Ответы:

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
GaretJax
источник
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.

tripplet
источник
/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. До сих пор я не заметил никаких проблем.

simple10
источник
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).

cbakgly
источник
0

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

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

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

Лео
источник