SFTP 连接¶
SFTP 连接类型启用 SFTP 集成。
SFTP 认证¶
使用 Airflow 连接到 SFTP 有两种方式。
使用
login和password。使用
private_key或key_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(主机文件)中有记录的主机;这可提供对特洛伊木马攻击的最大防护,但当/etc/ssh/ssh_known_hosts文件维护不善或频繁连接新主机时会带来不便。此选项会强制用户手动添加所有新主机。默认值为true,ssh 将自动将新主机密钥添加到用户已知主机文件中。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_file 或 private_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'