【发布时间】:2010-11-24 07:42:17
【问题描述】:
我正在使用 Net::SSH::Perl 在远程服务器上执行如下命令:
use Net::SSH::Perl;
my $ssh = Net::SSH::Perl->new($host);
$ssh->login($user, $pass);
my ($stdout, $stderr, $exit) = $ssh->cmd($cmd);
但是当我执行上面的脚本时,密码提示又来了。这意味着我在 $pass 中提供的密码不会用于建立 ssh 连接。为什么是这样?知道如何克服这个问题吗?我在下面给出调试信息:
serv1: 读取配置数据 /root/.ssh/config serv1:读取配置数据 /etc/ssh_config serv1:分配的本地端口 1023。 serv1:连接到 15.154.59.63,端口 22。 serv1:远程协议版本1.99,远程软件版本OpenSSH_4.2 serv1:Net::SSH::Perl 版本 1.34,协议版本 1.5。 serv1:没有兼容匹配:OpenSSH_4.2。 serv1:已建立连接。 serv1:等待服务器公钥。 serv1:收到服务器公钥(768 位)和主机密钥(1024 位)。 serv1:主机 '15.154.59.63' 是已知的并且与主机密钥匹配。 serv1:加密类型:DES3 serv1:发送加密会话密钥。 serv1:收到加密确认。 serv1:RSA 身份验证失败:无法加载公钥。 serv1:进行质询响应认证。 密码:
密码提示不应该是正确的,因为我已经在 $pass 变量中提供了密码?
更新(基于收到的 cmets):
我尝试了以下方法:
my $ssh = Net::SSH::Perl->new($host, debug =>1, identity_files => []);
现在,我没有收到“RSA 身份验证失败:”消息,但仍然出现密码提示。我在下面给出调试信息:
serv1:分配的本地端口 1023。 serv1:连接到 15.154.59.63,端口 22。 serv1:远程协议版本1.99,远程软件版本OpenSSH_4.2 serv1:Net::SSH::Perl 版本 1.34,协议版本 1.5。 serv1:没有兼容匹配:OpenSSH_4.2。 kf-linux-dm3:已建立连接。 serv1:等待服务器公钥。 serv1:收到服务器公钥(768 位)和主机密钥(1024 位)。 serv1:主机 '15.154.59.63' 是已知的并且与主机密钥匹配。 serv1:加密类型:DES3 serv1:发送加密会话密钥。 serv1:收到加密确认。 serv1:进行质询响应认证。 密码:
有人可以启发我吗?
【问题讨论】: