airflow.providers.ssh.hooks.ssh

用于 SSH 连接的 Hook。

属性

CMD_TIMEOUT

SSHHook

使用 Paramiko 执行远程命令。

模块内容

airflow.providers.ssh.hooks.ssh.CMD_TIMEOUT = 10[源码]
class airflow.providers.ssh.hooks.ssh.SSHHook(ssh_conn_id=None, remote_host='', username=None, password=None, key_file=None, port=None, conn_timeout=None, cmd_timeout=NOTSET, keepalive_interval=30, banner_timeout=30.0, disabled_algorithms=None, ciphers=None, auth_timeout=None, host_proxy_cmd=None)[源码]

基类: airflow.hooks.base.BaseHook

使用 Paramiko 执行远程命令。

此 Hook 也允许您创建 SSH 隧道,并作为 SFTP 文件传输的基础。

参数:
  • ssh_conn_id (str | None) – 来自 airflow 连接的 ssh 连接 ID,可以从中获取所有必需的参数,如用户名、密码或密钥文件,但在初始化期间传递的参数具有优先权。

  • remote_host (str) – 要连接的远程主机

  • username (str | None) – 连接到远程主机的用户名

  • password (str | None) – 连接到远程主机的用户密码

  • key_file (str | None) – 用于连接到远程主机的密钥文件路径

  • port (int | None) – 要连接的远程主机端口(默认为 paramiko SSH_PORT)

  • conn_timeout (int | None) – 连接到远程主机的尝试超时时间(以秒为单位)。默认值为 10 秒。如果提供,它将替换 ssh_conn_id 连接中预定义的 conn_timeout

  • cmd_timeout (float | airflow.utils.types.ArgNotSet | None) – 执行命令的超时时间(以秒为单位)。默认值为 10 秒。可为空,None 表示没有超时。如果提供,它将替换 ssh_conn_id 连接中预定义的 cmd_timeout

  • keepalive_interval (int) – 每隔 keepalive_interval 秒向远程主机发送一个保持活动数据包

  • banner_timeout (float) – 等待服务器横幅的超时时间(以秒为单位)

  • disabled_algorithms (dict | None) – 字典,将算法类型映射到算法标识符的可迭代对象,这些算法在传输的生命周期内将被禁用

  • ciphers (list[str] | None) – 按偏好顺序使用的密码列表

  • auth_timeout (int | None) – 尝试向远程主机进行身份验证的超时时间(以秒为单位)

conn_name_attr = 'ssh_conn_id'[源码]
default_conn_name = 'ssh_default'[源码]
conn_type = 'ssh'[源码]
hook_name = 'SSH'[源码]
classmethod get_ui_field_behaviour()[源码]

返回 SSH 连接的自定义 UI 字段行为。

ssh_conn_id = None[源码]
remote_host = ''[源码]
username = None[源码]
password = None[源码]
key_file = None[源码]
pkey = None[源码]
port = None[源码]
conn_timeout = None[源码]
cmd_timeout[源码]
keepalive_interval = 30[源码]
banner_timeout = 30.0[源码]
disabled_algorithms = None[源码]
ciphers = None[源码]
host_proxy_cmd = None[源码]
auth_timeout = None[源码]
compress = True[源码]
no_host_key_check = True[源码]
allow_host_key_change = False[源码]
host_key = None[源码]
look_for_keys = True[源码]
client: paramiko.SSHClient | None = None[源码]
property host_proxy: paramiko.ProxyCommand | None[源码]
get_conn()[源码]

与远程主机建立 SSH 连接。

get_tunnel(remote_port, remote_host='localhost', local_port=None)[源码]

在两台主机之间创建隧道。

这在概念上类似于 ssh -L <本地端口>:主机:<远程端口>

参数:
  • remote_port (int) – 要创建隧道的远程端口

  • remote_host (str) – 要创建隧道的远程主机(默认为 localhost)

  • local_port (int | None) – 附加隧道的本地端口

返回:

sshtunnel.SSHTunnelForwarder 对象

返回类型:

sshtunnel.SSHTunnelForwarder

exec_ssh_client_command(ssh_client, command, get_pty, environment, timeout=NOTSET)[源码]
test_connection()[源码]

通过执行远程 bash 命令测试 ssh 连接。

此条目有帮助吗?