Чтение закрытого ключа SSH из Pageant

Я пишу утилиту на C#, которая должна автоматически подключаться к серверу через SSH (с помощью SSH.NET) , который был в основном безболезненным процессом. Сервер принудительно использует аутентификацию с открытым ключом (сервер принадлежит мне, я полностью физически контролирую его), так что только несколько человек могут получить к нему доступ.

В Windows мы все настроили Pageant для связи с моим сервером с помощью TortoiseGit, поэтому для меня было бы целесообразно просто прочитать уже разблокированный закрытый ключ в памяти из Pageant вместо того, чтобы снова запрашивать пароль каждый раз, когда я хочу для отладки/запуска утилиты.

Пока самое близкое, что я нашел, это этот модуль Python от Paramiko, который проверяет наличие окна Pageant и предоставляет методы отправки и получения. Это должно быть достаточно просто для переноса на C#, но мне интересно, какую команду мне нужно отправить в Pageant, чтобы получить ключ?

Просматривая Paramiko, это не сразу становится очевидным, и я не могу найти какую-либо документацию для программной работы с Pageant. Ответы не обязательно должны быть на C#, но если они есть, это избавит меня от необходимости писать для него небольшую утилиту.


person Robert Rouhani    schedule 15.12.2012    source источник
comment
Другой ссылкой является net-ssh github. com/net-ssh/net-ssh/blob/master/lib/net/ssh/   -  person Factor Mystic    schedule 16.12.2012


Ответы (1)


Вы не читаете закрытый ключ от Pageant, а просите Pageant рассчитать подпись. Это требует модификации исходного кода клиента.

В последней версии нашего продукта SecureBlackbox мы добавили поддержку Pageant и ssh-agent в наши клиентские компоненты SSH и SFTP для .NET, так что вы можете взглянуть на них.

person Eugene Mayevski 'Callback    schedule 16.12.2012
comment
Извините за задержку с ответом, в итоге я немного отложил этот проект. Спасибо, однако, теперь это имеет гораздо больше смысла. - person Robert Rouhani; 22.05.2013