Интерактивный режим в Net :: OpenSSH - PullRequest
0 голосов
/ 28 июня 2018

Я новичок в Perl и пытаюсь написать скрипт, который использует Net :: OpenSSH для запуска команд на данном хосте. Как сделать интерактивный режим аутентификации в Net :: OpenSSH аналогично тому, что мы имеем в Net: SSH :: Perl. Net: SSH :: Perl имеет интерактивный флаг, который принимает пароль, если задано значение true, в противном случае - открытый ключ аутентификации. Ниже приводится объект SSH, который у меня есть в Net :: SSH :: Perl, который я хотел бы скопировать в Net :: OpenSSH:

 $ssh = Net::SSH::Perl->new($host,
                      debug          => $debug,
                      port           => $port,
                      interactive    => $imode,
                      identity_files => [ @keys ],
                      );

Также Net :: SSH :: Perl может принимать массив ключей, тогда как Net :: OpenSSH только один. Как мне обойти это?

1 Ответ

0 голосов
/ 29 июня 2018

Net :: OpenSSH уже по умолчанию работает в интерактивном режиме, позволяя нижележащему процессу ssh запрашивать пароль при сбое всех других методов аутентификации (вы должны запросить batch_mode чтобы отключить его).

Вы можете передать несколько ключей через аргумент конструктора master_opts:

my $ssh = Net::OpenSSH->new($host, ...
                            master_opts => [map { -i => $_ } @keys]);

Вы также можете создать запрос функции в GitHub bug-tracker , и я со временем добавлю поддержку для принятия более одного ключа без использования хака master_opts.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...