Я использую Net :: SSH :: Perl для выполнения команды на удаленном сервере следующим образом:Почему ssh подсказывает мне пароль после того, как я передаю его в Perl Net :: SSH :: Perl?
use Net::SSH::Perl;
my $ssh = Net::SSH::Perl->new($host);
$ssh->login($user, $pass);
my ($stdout, $stderr, $exit) = $ssh->cmd($cmd);
Но когда я исполню выше сценарий, будет предложено ввести пароль снова приходит. Значение пароля, который я поставил в $ pass, не принимается, чтобы установить ssh-соединение. Почему это? Любая идея, как я могу это преодолеть? Я даю ниже отладочной информации:
serv1: Reading configuration data /root/.ssh/config serv1: Reading configuration data /etc/ssh_config serv1: Allocated local port 1023. serv1: Connecting to 15.154.59.63, port 22. serv1: Remote protocol version 1.99, remote software version OpenSSH_4.2 serv1: Net::SSH::Perl Version 1.34, protocol version 1.5. serv1: No compat match: OpenSSH_4.2. serv1: Connection established. serv1: Waiting for server public key. serv1: Received server public key (768 bits) and host key (1024 bits). serv1: Host '15.154.59.63' is known and matches the host key. serv1: Encryption type: DES3 serv1: Sent encrypted session key. serv1: Received encryption confirmation. serv1: RSA authentication failed: Can't load public key. serv1: Doing challenge response authentication. Password:
запрос пароль не должен приходить правильно, учитывая, что я уже поставил пароль в переменных $ пропускания?
UPDATE (На основании полученных замечаний):
Я попробовал следующее:
my $ssh = Net::SSH::Perl->new($host, debug =>1, identity_files => []);
Теперь я не получаю сообщение «аутентификации RSA не удалось:» но все-таки появляется запрос на ввод пароля , Ниже приводится информация об отладке:
serv1: Allocated local port 1023. serv1: Connecting to 15.154.59.63, port 22. serv1: Remote protocol version 1.99, remote software version OpenSSH_4.2 serv1: Net::SSH::Perl Version 1.34, protocol version 1.5. serv1: No compat match: OpenSSH_4.2. kf-linux-dm3: Connection established. serv1: Waiting for server public key. serv1: Received server public key (768 bits) and host key (1024 bits). serv1: Host '15.154.59.63' is known and matches the host key. serv1: Encryption type: DES3 serv1: Sent encrypted session key. serv1: Received encryption confirmation. serv1: Doing challenge response authentication. Password:
Может кто-нибудь просветить меня?
Установка identity_files в пустой массив не помогло :(запрос пароля по-прежнему идет вверх.Если я даю путь для файла ключей rsa, я получаю следующую ошибку: «Невозможно использовать строку (« /root/.ssh/id_rsa.pub ») как ARRAY ref, а« строгие ссылки »используются в/usr/lib/perl5/site_perl/5.8.8/Net/SSH/Perl/Auth/RSA.pm строка 40. " Любая идея, почему это происходит? – Ninja
@Ninja: убедитесь, что вы поставляете * reference * в массив, а не только массив. –
@ Адам: Я передаю только ссылку, и она не работает. Ниже приводится фрагмент кода: @arr = (""); my $ ssh = Net :: SSH :: Perl-> new ($ host, debug => 1, identity_files => \ @arr); Если я установил identity_files в пустой массив, как предложил Марк, я получаю то же сообщение «Ошибка аутентификации RSA: невозможно загрузить открытый ключ». и затем появится запрос пароля. Кто-то pl. Помоги мне. – Ninja