【问题标题】:Apache Airflow Unable to fetch file over SFTPApache Airflow 无法通过 SFTP 获取文件
【发布时间】:2017-12-18 16:17:31
【问题描述】:

我正在使用 Airflow v1.9rc5 中的 sftp_operator。我正在尝试通过 SFTP 获取两个文件,但我得到了:

错误 - 无法连接到主机:192.168.56.101,错误:没有可用的身份验证方法

我已经为这个远程主机设置了连接 ID。我还使用 SFTP 命令验证了来自 BASH 的连接。

FTP 抓取任务:

sftp = SFTPOperator(
        task_id='fetch_data',
        ssh_conn_id='sftpid2',
        local_filepath='/Users',
        remote_filepath='/',
        operation=SFTPOperation.GET,
        dag=dag
        )

【问题讨论】:

  • 谢谢,我看到并按照示例进行操作,但我仍然无法弄清楚为什么会出现此错误。
  • 我能够通过使用 SSH 密钥而不是 UID 和 PW 来使 SFTP 工作。要将 SSH 密钥与连接 ID 一起使用,您需要在连接定义的 extras 字段中设置密钥的路径。 {"key_file": "/PATH TO YOUR KEY/.ssh/KEYNAME_rsa"} 密钥不能受密码保护。同样使用 Airflow v1.9rc5 我在更新 extras 字段时遇到了问题。尝试添加密钥路径时收到“无效填充”的错误消息。我不得不恢复到 v1.8,更新然后再次运行 v1.9。我不确定 SSH 密钥是否是当前唯一支持的方法。

标签: sftp airflow


【解决方案1】:

问题在于 UI 没有更新数据库中该连接 ID 的密码字段。因此,当您尝试使用用户 ID 和 PW 进行 SFTP 时,它会失败。如果您更新了该记录中的密码字段,一切都会按预期进行。因此,SFTP 可以使用 SSH 密钥或 UID 和 PW。

【讨论】:

  • 如何更新数据库中的密码字段?另外,您在气流(FTP 或 SSH)中配置了什么连接器类型?我只有 SFTP 服务器的 UID 和 PW 身份验证我正在尝试使用气流从服务器下载文件但无法进行身份验证。
  • 您可以使用 SQLite3 命令来查询数据库,但除了需要验证记录之外,您不需要这样做。气流中的连接类型应该是 SFTP 的 SSH。当我们将 Airflow 版本更新到 v1.9 时,修复了一些问题。 IIRC UI 将凭据保存到数据库中存在问题。但是从 v1.9 开始,这个问题已经解决了。所以....您应该不需要使用 PW 手动更新记录。
猜你喜欢
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
相关资源
最近更新 更多