Perl-скрипт для выполнения команды ssh без использования пароля - PullRequest
0 голосов
/ 19 марта 2012

У меня есть безликая учетная запись на удаленной машине. То есть мне не нужно вводить свой пароль при выполнении ssh. Мой вопрос заключается в том, каким должен быть мой код, если мне не нужно использовать пароль через код perl .В показанном коде все еще запрашивается пароль

 $cmd="cat /read.log";
 my $ssh = Net::SSH::Perl->new($host, protocol => '1,2', debug => 1);
 $ssh->login($user, $pass);
 my($stdout, $stderr, $exit) = $ssh->cmd($cmd);
 print $stdout, "\n";

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Вы должны дать identity_files аргумент Net::SSH::Perl->new. Проверьте, где находятся ваши идентификационные файлы и сравните с модулем документации :

identity_files

Список файлов идентификации RSA / DSA, которые будут использоваться при аутентификации RSA / DSA. Значение этого аргумента должно быть ссылкой на массив строк, каждая строка идентифицирует местоположение файла идентификации. Каждый файл идентификации будет проверяться на сервере, пока клиент не найдет тот, который успешно аутентифицируется.

Если вы не предоставите это, для аутентификации RSA по умолчанию используется $ ENV {HOME} /. Ssh / identity, а для аутентификации DSA по умолчанию используется $ ENV {HOME} /. Ssh / id_dsa.

1 голос
/ 19 марта 2012

В то время как стандартный ssh проверяет id_rsa и id_dsa в вашей папке ~/.ssh/ при использовании аутентификации с ответом на запрос, Net::SSH::Perl ищет только в $ENV{HOME}/.ssh/identity для RSA и $ENV{HOME}/.ssh/id_dsa для DSA. Я подозреваю, что это является причиной проблемы, и вы можете решить эту проблему, добавив identity_files к параметрам, переданным методу new.

Проверьте вашу личность, выполнив ls ~/.ssh/ и найдите файл с именем id_rsa. Затем просто установите identity_files для включения соответствующих путей.

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