SFTP 连接

SFTP 连接类型支持 SFTP 集成。

SFTP 认证

使用 Airflow 连接到 SFTP 有两种方式。

  1. 使用 loginpassword

  2. 使用 private_keykey_file,以及可选的 private_key_passphrase

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

默认连接 ID

与 SFTP 相关的 Hook、Operator 和 Sensor 默认使用 sftp_default

配置连接

登录 (可选)

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

密码 (可选)

指定远程机器的 sftp 密码。

端口 (可选)

指定远程机器的 SSH 端口。

主机 (可选)

指定远程机器的主机名或 IP 地址。

额外参数 (可选)

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

  • key_file - 将用于连接到 remote_host 的 SSH 私钥文件的完整路径。

  • private_key - 用于连接到 remote_host 的私钥内容。

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

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

  • timeout - 已弃用 - 请改用 conn_timeout

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

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

  • allow_host_key_change - 如果您希望允许连接到主机密钥已更改的主机或收到“REMOTE HOST IDENTIFICATION HAS CHANGED”错误时,请将其设置为 true。这无法防御中间人攻击。另一种可能的解决方案是从 ~/.ssh/known_hosts 文件中删除主机条目。默认值为 false

  • look_for_keys - 如果您想禁用在 ~/.ssh/ 中搜索可发现的私钥文件,请将其设置为 false

  • host_key - 主机的 base64 编码的 ssh-rsa 公钥或“ssh- ” (与您在 known_hosts 文件中找到的格式相同)。只有当端点的公钥与此值匹配时,指定此参数才允许建立连接。

  • disabled_algorithms - 一个字典,将算法类型映射到一组算法标识符,这些标识符将在传输的整个生命周期内被禁用。

  • ciphers - 按偏好顺序使用的密码列表。

使用 host_key 的“extras”字段示例

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

使用 key_fileprivate_key 的“extras”字段示例

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

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

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

包含 key_file 的连接字符串示例 (连接中提供密钥文件路径)

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

包含 host_key 的连接字符串示例

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

本条目是否有帮助?