7

我正在尝试使用Net::SSH::Perl带有此代码的公钥进行连接:

my $ssh = Net::SSH::Perl->new($host, debug=>1) || die ......

我把密钥放在 /root/.ssh/id_rsa 和 /root/.ssh/identity

似乎它没有尝试使用公钥,而是尝试询问密码:

我得到这个输出:

localhost:发送密钥交换初始化(KEXINIT),等待响应。
本地主机:算法,c->s:3des-cbc hmac-sha1 无
本地主机:算法,s->c:3des-cbc hmac-sha1 无
localhost:进入 Diffie-Hellman Group 1 密钥交换。
localhost:发送DH公钥,等待回复。
localhost:收到主机密钥,输入“ssh-dss”。
localhost:主机 '10.212.1.201' 是已知的并且与主机密钥匹配。
localhost:计算共享密钥。
localhost:验证服务器签名。
localhost:等待 NEWKEYS 消息。
本地主机:发送 NEWKEYS。
localhost:启用加密/MAC/压缩。
localhost:发送用户认证服务请求。
localhost:接受的服务:ssh-userauth。
localhost:尝试空的用户身份验证请求。
localhost:可以继续的认证方式:publickey,gssapi-with-mic,password。
localhost:下一个尝试的方法是 publickey。
localhost:下一个尝试的方法是密码。
localhost:尝试密码验证。
localhost:不会在批处理模式下查询密码。
localhost:可以继续的认证方式:publickey,gssapi-with-mic,password。
localhost:下一个尝试的方法是 publickey。
localhost:下一个尝试的方法是密码。
localhost:尝试密码验证。
localhost:不会在批处理模式下查询密码。
localhost:可以继续的认证方式:publickey,gssapi-with-mic,password。
localhost:下一个尝试的方法是 publickey。
localhost:下一个尝试的方法是密码。
localhost:尝试密码验证。
localhost:不会在批处理模式下查询密码。
localhost:可以继续的认证方式:publickey,gssapi-with-mic,password。
localhost:下一个尝试的方法是 publickey。
localhost:下一个尝试的方法是密码。
4

1 回答 1

11

找到它:必须手动指定密钥文件位置:

@KEYFILE = ("/root/.ssh/id_rsa");
$ssh = Net::SSH::Perl->new($host, debug=>1, identity_files=>\@KEYFILE)
于 2010-08-26T18:40:16.260 回答