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'

本條目是否有幫助?