Net :: SSH :: Perl:收到断开连接消息:用户名身份验证失败太多

时间:2018-09-10 10:55:44

标签: perl ssh

我正在尝试连接到远程服务器并在我的Perl脚本中运行ssh命令。我提供了正确的端口,主机,用户名和密码。使用相同的凭据,我可以通过终端正确登录。当我在代码中提供相同内容时,我会收到错误响应。请帮忙。

这是我的代码:

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 :(得分:2)

您的密码在双引号内指定,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会警告您。