我在远程计算机上有一个匿名帐户,即在执行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";
最佳答案
当使用质询响应身份验证时,标准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
设置为包括适当的路径即可。
关于perl - Perl脚本无需密码即可执行ssh命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9766780/