我安装了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模块可以满足我的要求吗?
请帮忙。
谢谢和问候,
埃杜
答案 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时(虽然它也有其他依赖项)。