Perl Net :: SFTP ::外部密码验证。无法进行密钥交换设置

时间:2016-06-27 14:47:02

标签: perl ssh sftp

我安装了Net :: SFTP :: Foreign模块,它正好用于密钥交换sftp设置。但我需要将其设置为基于密码的身份验证,其中应该使用我传递给登录的密码。

我已经经历了关于这个主题的多个线程,并发现使用IO:Perl的Pty模块在某种程度上可行。下面是我发现使用的命令。

my $sftp = Net::SFTP::Foreign->new(
    $host, 
    user => $user, 
    password => $password,
    more => [
        -o => 'PreferredAuthentications=password,keyboard-interactive,***publickey***'
    ],
);

但是在这里,在首选的身份验证中,公钥也正在传递。

有人可以帮我这个吗?这里提到的公钥是什么?

另外,安装IO :: Pty和Net :: SFTP :: Foreign模块可以满足我的要求吗?

请帮忙。

谢谢和问候,
埃杜

1 个答案:

答案 0 :(得分:-1)

我没有看到使用Net :: SFTP :: Foreign的意义,使用本机Net :: SFTP。

无论如何,PreferredAuthentications只列出了您的身份验证机制的首选顺序。 publickey未引用任何特定密钥。它只是说Net :: SFTP :: Foreign应该尝试第一次密码验证,如果失败,请尝试键盘交互式身份验证,并且只有在失败的情况下才尝试公钥验证。显然,如果您没有指定任何密钥对,即使列出了公钥认证,也不会尝试进行公钥认证。

另请参阅ssh_config man page中的PreferredAuthentications条目。

如果您想使用密码验证,无论如何,列出其他方法没有意义,只列出密码:

-o => 'PreferredAuthentications=password'

使用IO:Pty来实现密码验证 Net :: SFTP :: Foreign,但不是在使用Net :: SFTP时(虽然它也有其他依赖项)。