【问题标题】:Perl Net::SFTP::Foreign password authentication . No key exchange setup can be donePerl Net::SFTP::外网密码认证。无法进行密钥交换设置
【发布时间】:2016-10-29 15:31:27
【问题描述】:

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

我在这个主题上经历了多个线程,发现使用 Perl 的 IO:Pty 模块以某种方式是可能的。以下是我发现使用的命令。

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

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

谁能帮我解决这个问题?这里提到的公钥是什么?

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

请帮忙。

感谢和问候,
教育

【问题讨论】:

标签: perl ssh sftp


【解决方案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 时不会(尽管它也有其他依赖项)。

【讨论】:

  • Net::SFTP 是“纯 perl”,但需要编译一些复杂的数学库。 Net::SFTP::Foreign 使用您系统现有的“ssh”命令...IMO,它是 sftp 更简单和首选的库。
  • 感谢您的回复!我刚刚尝试了以下。它工作得很好。我的 $sftp = Net::SFTP::Foreign ->new(host=> $ftp_address, user => $ftp_user_id, password => $ftp_password ); $sftp->$direction($ftp_source, $ftp_target, conversion => 'unix2dos' ) 或 die "put failed:" 。 $sftp->错误;使用有效的输入参数,工作进展顺利。但在命令行中,它显示以下消息。支持 SFTP 和 SCP 密码的 SSH 服务器 输入 icrestb 的密码 您能否就如何避免收到此密码信息提出建议?谢谢
猜你喜欢
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 2019-08-22
相关资源
最近更新 更多