我在远程机器上有一个匿名帐户。我在执行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";
答案 0 :(得分:1)
标准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
即可包含相应的路径。
答案 1 :(得分:1)
您应该将identity_files
参数提供给Net::SSH::Perl->new
。检查您的身份文件所在的位置,并与module docs:
identity_files
要在RSA / DSA身份验证中使用的RSA / DSA身份文件列表。此参数的值应该是对字符串数组的引用,每个字符串标识标识文件的位置。将针对服务器测试每个身份文件,直到客户端找到成功进行身份验证的身份文件。
如果您不提供此功能,则RSA身份验证默认使用$ ENV {HOME} /。ssh / identity,DSA身份验证默认为$ ENV {HOME} /。ssh / id_dsa。