perl脚本在不使用密码的情况下执行ssh命令

时间:2012-03-19 08:05:42

标签: perl ssh

我在远程机器上有一个匿名帐户。我在执行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 个答案:

答案 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。