Как извлечь личные ключи из SSH-Agent?
-
24-10-2019 - |
Вопрос
ssh-add -l
Дисплей, которые у меня есть 3 клавиши RSA, добавлены в мой агент SSH.
ssh-add -L
Отображает эти общедоступные ключи.
Как мне получить личные ключи, чтобы я мог сохранить их в файле? Или по дизайну, что это невозможно? Как это работает тогда?
Можно ли попросить SSH-AGENT выполнять операции, используя закрытый ключ? Как я могу попросить его зашифровать/расшифровать номер для меня?
Это нормально, что я должен написать код для этого (язык программирования не имеет значения), но я бы предпочел использовать существующий инструмент или библиотеку.
Решение
Невозможно получить закрытый ключ или выполнить шифрование, используя протокол между SSH и SSH-агентом, но можно получить закрытый ключ, сбросив память о SSH-агенте. На Linux вы должны быть корнем, чтобы сделать дамп памяти.
Я только что нашел очень хорошее объяснение о том, как работает SSH-Agent: http://www.unixwiz.net/techtips/ssh-agent-forwarding.html Анкет Это частично отвечает на некоторые из моих вопросов.
Одним из наиболее умных аспектов агента является то, как он может проверить личность пользователя (или, точнее, владение частным ключом), не раскрывая этот личный ключ для кого -либо.
Одним из преимуществ безопасности агента является то, что закрытый ключ пользователя никогда не появляется в удаленных системах или на проводе, даже в зашифрованной форме.
Таким образом, протокол между SSH-клиентом и SSH-агентом не распространялся на SSH1 или SSH2, чтобы вывести частные ключи от SSH-агента.
Однако, как root, вы можете получить дамп памяти SSH-Agent и попытаться извлечь личный ключ оттуда. https://blog.netspi.com/stealing-uncrypted-ssh-agent-keys-from-memory Делает именно это, и в разделе «Комментарий» на этой странице упоминаются и другие части программного обеспечения. Тем не менее, программное обеспечение на этой странице не сработало для меня на Debian Buster: дамп памяти не содержал никаких ключей, хотя ssh-add -l
показал ключ RSA.
Другие советы
В моем случае я случайно удалил папку .ssh, но мои ключи загружены. Но так как я не могу восстановить их из SSH-ADD, поэтому мне пришлось использовать программное обеспечение для восстановления файлов.
Вам, вероятно, не нужно. Скорее всего, вы просто хотите открытый ключ:
ssh-add -L > ~/.ssh/id_rsa.pub