Как вывести список загруженных SSH-ключей в Windows (конкурс)

Я пытаюсь создать простой пакетный скрипт Windows, который будет управлять подключением к нашему клиенту. Это включает в себя некоторые туннели, использующие цепочку plink.exe и socks. Для каждого прыжка требуется аутентификация по ключу ssh, для которой я использую pageant.exe.

Каждая часть написана по мере необходимости, за исключением театрализованной части, где я борюсь. Встречающиеся факты:

Если я запущу только pageant.exe, он запустит агент театрализованного представления без загруженного ключа SSH, и скрипт сразу же продолжит работу. Затем я могу запустить pageant.exe my_key.ppk, чтобы добавить ключ в театрализованное представление, и будет запрошена парольная фраза, однако тем временем сценарий также будет продолжаться, поэтому сценарий продолжит выполнять часть plink, которая завершится ошибкой, потому что до этого времени пользователь не предоставит парольную фразу.

Я просматривал документы конкурса и нашел некоторые переключатели CLI, такие как -l, которые предположительно должны отображать загруженные ключи, но, похоже, не работают в версии для Windows. Похоже, что версия Windows принимает аргументы только в виде файлов .ppk.

Я хотел бы в основном сделать какую-то функцию «ожидания», пока пользователь не предоставит кодовую фразу. Есть ли способ вывести список загруженных ключей непосредственно из театрализованного представления или любой общий метод, запрашивающий у среды Windows ключи SSH?


person Ricky-Brno    schedule 26.11.2018    source источник


Ответы (1)


Pageant имеет -c переключатель, который вы можете использовать для передачи команды, которая будет выполняться после загрузки закрытого ключа:

Вы можете сделать так, чтобы Pageant запускал другую программу после того, как она инициализируется и загрузит все ключи, указанные в ее командной строке. Эта программа (возможно, PuTTY или WinCVS, использующая Plink или что-то еще) сможет использовать ключи, загруженные Pageant.

Вы делаете это, указав параметр -c, за которым следует команда, например:

C:\PuTTY\pageant.exe d:\main.ppk -c C:\PuTTY\putty.exe

Хотя в целом Pageant — это инструмент для интерактивного использования, а не для написания сценариев. Для сценариев используйте переключатель -i Plink, чтобы предоставить закрытый ключ для аутентификации.

person Martin Prikryl    schedule 26.11.2018
comment
о, как очевидно. Мне стыдно. Это сделало трюк! Большое спасибо, Мартин - person Ricky-Brno; 27.11.2018
comment
Следует отметить, что -c запускает команду, даже если зашифрованный закрытый ключ не был загружен, например, потому что пользователь отклонил запрос пароля. - person bers; 23.12.2020