Net :: SSH :: Perl: получено сообщение об отключении: слишком много ошибок аутентификации для имени пользователя - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь подключиться к удаленному серверу и выполнить команды ssh в моем скрипте Perl.Я указал правильный порт, хост, имя пользователя и пароль.Используя те же учетные данные, я могу правильно войти через терминал.Когда я предоставляю то же самое в своем коде, я получаю ответ об ошибке.Пожалуйста, помогите.

Вот мой код:

use strict;

use Net::SSH::Perl;

my $hostname = "xxx.zzz.ccc.vvv";
my $username = "username";
my $password = "password";

my $cmd = "aws --version";

my $ssh = Net::SSH::Perl->new("$hostname", debug=>0, port=> 56789);
$ssh->login("$username","$password");
my ($stdout,$stderr,$exit) = $ssh->cmd("$cmd");
print $stdout;

Вот вывод:

Received disconnect message: Too many authentication failures for username
at /usr/local/lib/x86_64-linux-gnu/perl/5.26.0/Net/SSH/Perl/AuthMgr.pm line 157.

1 Ответ

0 голосов
/ 12 сентября 2018

Ваш пароль указан в двойных кавычках, и Perl будет интерполировать скалярные и массивные переменные в двойных кавычках.

$password = "qwer@345"; print $password;    #   "qwer"

Если вы используете двойные кавычки для заключения строки, вы должны экранировать любые специальные символы в этой строке, такие как $, @, " или \.

$password = "qwer\@345"; print $password;    #   "qwer@345"

или используйте одинарные кавычки - Perl не выполняет интерполяцию внутри одинарных кавычек.

$password = 'qwer@345'; print $password;    #   "qwer@345"

Если вы use warnings (вы всегда use warnings, не так ли?), иногда Perl предупреждает вас, когда что-то, что вы пишете в двойных кавычках, может быть неправильно истолковано.

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