perl - Perl脚本无需密码即可执行ssh命令

标签 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";

最佳答案

当使用质询响应身份验证时,标准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/

相关文章:

Python 和通过 SSH 连接到 MySQL

perl - 使用Perl按点分割

Perl 不一致地打印包含 '%' 特定组合的字符串

perl - 禁用不适当的缓冲 Perl

ssh - docker run找不到名称标志参数

ruby - 在Juniper OS上通过SSH的多个脚本命令

git - 即使在 eval ssh-agent 之后,ssh-add 错误 "Could not connect..."

ssh - 是否可以查询 ssh 连接中可用的最大 channel 数?

perl - 如何使用 Test::more 忽略 perl 中的 TAP 结果?

perl - 变量未在应用中更新