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

мій приватний ключ правильно розшифрований і вся інформація друкується.

Що сталося з оновленням до Mavericks? Як я можу повернути свій приватний ключ у зручному стані?

Відповіді:


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 / санкціонований_keys2 на .ssh / санкціонований_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 Mountain Lion. http://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html

Я припускаю, що Apple змінила щось із opensh, а "нова" версія не здатна читати новіший формат 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 ВМ.
Лрі

Цікаво, Якщо у вас є час, ви можете перевірити, що показує "ssh-keygen -vvv -y -f id_rsa", якщо ви використовуєте клавішу pkcs # 8?
триплет

Мій ключ 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

Я не впевнений, що сила зв'язання opensl щось порушує Mavricks. Поки що я не помітив жодних проблем.


0

Мені вдалося виправити цю проблему, просто виконавши наступне:

cd ~/.ssh
mv known_hosts known_hosts.old

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


Але не забудьте перевірити відбиток пальця!
zigg

1
Це інша проблема від тієї, про яку я питав. Відомий файл хостів не має нічого спільного з проблемою, що виникає тут (розшифровка приватного ключа)
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.