SFTP 连接

SFTP 连接类型支持 SFTP 集成。

验证到 SFTP

有两种方法可以使用 Airflow 连接到 SFTP。

  1. 使用 登录名密码

  2. 使用 私钥密钥文件,以及可选的 私钥密码

一次只能使用一种授权方法。 如果您需要管理多个凭据或密钥,则应配置多个连接。

默认连接 ID

与 SFTP 相关的钩子、运算符和传感器默认使用 sftp_default

配置连接

登录名(可选)

指定远程机器的 sftp 用户名。

密码(可选)

指定远程机器的 sftp 密码。

端口(可选)

指定远程机器的 SSH 端口

主机(可选)

指定远程机器的主机名或 IP

额外参数(可选)

指定可在 sftp 连接中使用的额外参数(作为 json 字典)。 以下参数都是可选的

  • 密钥文件 - 将用于连接到远程主机的私有 SSH 密钥文件的完整路径。

  • 私钥 - 用于连接到远程主机的内容的私钥。

  • 私钥密码 - 用于解密私钥的私钥密码的内容。

  • 连接超时 - TCP 连接的可选超时(以秒为单位)。 默认为 10

  • 超时 - 已弃用 - 请改用 conn_timeout。

  • 压缩 - true 要求远程客户端/服务器压缩流量; false 拒绝压缩。 默认为 true

  • 无主机密钥检查 - 设置为 false 以限制连接到 ~/.ssh/known_hosts(主机文件)中没有条目的主机。 这提供了针对特洛伊木马攻击的最大保护,但是当 /etc/ssh/ssh_known_hosts 文件维护不善或经常连接到新主机时可能会很麻烦。 此选项强制用户手动添加所有新主机。 默认为 true,ssh 会自动将新的主机密钥添加到用户已知主机文件中。

  • 允许主机密钥更改 - 如果您想允许连接到主机密钥已更改的主机或出现“远程主机标识已更改”错误时,请设置为 true。 这不会防止中间人攻击。 另一种可能的解决方案是从 ~/.ssh/known_hosts 文件中删除主机条目。 默认为 false

  • 查找密钥 - 如果要禁用在 ~/.ssh/ 中搜索可发现的私钥文件,请设置为 false

  • 主机密钥 - 主机的 base64 编码 ssh-rsa 公钥或“ssh-<密钥类型> <密钥数据>”(如您在 known_hosts 文件中找到的那样)。 指定此选项允许当且仅当端点的公钥与此值匹配时才进行连接。

  • 禁用算法 - 将算法类型映射到算法标识符的可迭代对象的字典,这些算法标识符将在传输的生存期内被禁用。

  • 密码 - 要按优先顺序使用的密码列表。

使用 主机密钥 的示例“额外参数”字段

{
   "no_host_key_check": "false",
   "allow_host_key_change": "false",
   "host_key": "AAAHD...YDWwq=="
}

使用 密钥文件私钥 的示例“额外参数”字段

{
   "key_file": "path/to/private_key",
   "no_host_key_check": "true"
}

在环境变量中指定连接时,应使用 URI 语法指定它。

请注意,URI 的所有组件都应进行 URL 编码。

使用 密钥文件 的示例连接字符串(连接中提供的密钥文件路径)

export AIRFLOW_CONN_SFTP_DEFAULT='sftp://user:pass@localhost:22?key_file=%2Fhome%2Fairflow%2F.ssh%2Fid_rsa'

使用 主机密钥 的示例连接字符串

AIRFLOW_CONN_SFTP_DEFAULT='sftp://user:pass@localhost:22?host_key=AAAHD...YDWwq%3D%3D&no_host_key_check=false'

此条目有帮助吗?