Как извлечь приватные ключи из ssh-агента? - PullRequest
14 голосов
/ 04 июня 2010

ssh-add -l показывает, что к моему агенту SSH добавлено 3 ключа RSA.

ssh-add -L отображает эти открытые ключи.

Как мне получить закрытые ключи, чтобы я мог сохранить их в файл? Или по замыслу это невозможно? Как это работает тогда?

Может ли ssh-agent запрашивать выполнение операций с использованием закрытого ключа? Как я могу попросить его зашифровать / расшифровать номер для меня?

Это нормально, что я должен написать код для этого (язык программирования не имеет значения), но я бы предпочел использовать существующий инструмент или библиотеку.

Ответы [ 3 ]

7 голосов
/ 04 июня 2010

Невозможно получить закрытый ключ или выполнить шифрование по протоколу между ssh и ssh-agent, но возможно получить закрытый ключ, сбросив память ssh-agent. В Linux вы должны быть пользователем root, чтобы сделать дамп памяти.

Я только что нашел очень хорошее объяснение того, как работает ssh-agent: http://www.unixwiz.net/techtips/ssh-agent-forwarding.html. Это частично отвечает на некоторые мои вопросы.

  • Один из более умных аспектов агента - это то, как он может проверить личность пользователя (или, точнее, владение личным ключом), не раскрывая этот личный ключ никому.

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

Таким образом, протокол между SSH-клиентом и ssh-agent в SSH1 или SSH2 никак не позволяет получить закрытые ключи от ssh-agent.

Однако в качестве пользователя root вы можете получить дамп памяти ssh-agent и попытаться извлечь из него закрытый ключ. https://blog.netspi.com/stealing-unencrypted-ssh-agent-keys-from-memory делает именно это, и есть другие части программного обеспечения, упомянутые в разделе комментариев на этой странице. Однако программное обеспечение на этой странице не работало для меня в Debian Buster: дамп памяти не содержал никаких ключей, хотя ssh-add -l отображал ключ RSA.

1 голос
/ 19 февраля 2018

В моем случае я случайно удалил папку .ssh, но мои ключи загружены. Но так как я не могу восстановить их из ssh-add, мне пришлось использовать программное обеспечение для восстановления файлов.

0 голосов
/ 05 февраля 2019

Вам, вероятно, не нужно. Скорее всего, вам нужен только открытый ключ:

ssh-add -L > ~/.ssh/id_rsa.pub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...