在Airflow中使用SSHOperator执行远程命令时,可能会遇到加密模块发生InvalidToken错误的问题。这通常是由于密钥或密码不正确导致的。以下是一个解决方法的代码示例:
from airflow import DAG
from airflow.contrib.operators.ssh_operator import SSHOperator
from datetime import datetime
default_args = {
'owner': 'airflow',
'start_date': datetime(2022, 1, 1)
}
dag = DAG('ssh_operator_example', default_args=default_args, schedule_interval=None)
ssh_task = SSHOperator(
task_id='ssh_task',
ssh_conn_id='my_ssh_connection', # 在Airflow中配置的SSH连接
command='echo "Hello, World!"',
dag=dag
)
在上面的示例中,my_ssh_connection
是在Airflow中配置的SSH连接,其中包含远程服务器的主机名、用户名、密码或密钥等信息。
确保在Airflow的配置文件中正确配置了SSH连接:
[connections]
my_ssh_connection = ssh://user:password@hostname:port
如果使用密钥进行认证,可以使用ssh_conn_id
参数指定密钥文件的路径:
[connections]
my_ssh_connection = ssh://user@hostname:port?key_file=/path/to/private_key
请确保SSH连接的配置信息正确,并且可以通过手动SSH连接进行验证。如果仍然遇到InvalidToken错误,请确保密钥或密码正确,并且没有其他网络或安全配置问题导致连接失败。