2012-03-19 125 views
0

执行ssh命令我有一个远程machine.ie一个不露面的帐户,我没有插入做ssh.My问题时,我的密码是什么应该是我的代码,如果我不必须通过perl的code.In所示的代码使用密码还是它要求输入密码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"; 

回答

1

在使用质询 - 响应认证时的标准ssh检查你的~/.ssh/文件夹id_rsaid_dsaNet::SSH::Perl只查找$ENV{HOME}/.ssh/identityRSA$ENV{HOME}/.ssh/id_dsaDSA。我怀疑这是问题的原因,您可以通过将identity_files添加到传递给new方法的参数来解决此问题。

通过执行ls ~/.ssh/检查你的身份和寻找一个叫做id_rsa文件。然后简单地设置identity_files以包括适当的路径。

+0

K我没有在ls〜/ .ssh中的id_rsa文件/这可以不在代码本身hanled .. – Rajeev 2012-03-19 08:25:06

+0

我几乎不敢问...但你有任何id_文件在把〜/ .ssh? – freespace 2012-03-19 08:26:44

+0

他们运行一些程序做在兴田公司的密码登录。虽然我知道SSH密钥实现无密码登录 – Rajeev 2012-03-19 09:41:10

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。

相关问题