ssh - SFTPOperator 无法通过需要密码和公钥身份验证的主机进行身份验证
问题描述
气流版本:2.0.0
当我使用 sftp 命令从任何气流工作人员手动连接到主机时,一切正常。这是我尝试使用在后台使用 paramiko 库传输文件的运算符时的错误日志:
{ssh.py:202} WARNING - No Host Key Verification. This wont protect against Man-In-The-Middle attacks
{transport.py:1819} INFO - Connected (version 2.0, client 1.91)
{transport.py:1819} INFO - Auth banner: b'MOMENTUM SYSTEMS - SSH Server\nAuthentication Methods Supported:\nPUBLICKEY, PASSWORD'
{transport.py:1819} INFO - Authentication continues...
{transport.py:1819} INFO - Disconnect (code 2): unexpected service request
{taskinstance.py:1396} ERROR - Authentication failed.
Traceback (most recent call last):
File "/home/centos/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1086, in _run_raw_task
self._prepare_and_execute_task_with_callbacks(context, task)
File "/home/centos/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1260, in _prepare_and_execute_task_with_callbacks
result = self._execute_task(context, task_copy)
File "/home/centos/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1300, in _execute_task
result = task_copy.execute(context=context)
File "/home/centos/airflow-dags/utils/operators/s3_to_sftp.py", line 76, in execute
sftp_client = ssh_hook.get_conn().open_sftp()
File "/home/centos/.local/lib/python3.7/site-packages/airflow/providers/ssh/hooks/ssh.py", line 225, in get_conn
client.connect(**connect_kwargs)
File "/home/centos/.local/lib/python3.7/site-packages/paramiko/client.py", line 446, in connect
passphrase,
File "/home/centos/.local/lib/python3.7/site-packages/paramiko/client.py", line 764, in _auth
raise saved_exception
File "/home/centos/.local/lib/python3.7/site-packages/paramiko/client.py", line 751, in _auth
self._transport.auth_password(username, password)
File "/home/centos/.local/lib/python3.7/site-packages/paramiko/transport.py", line 1509, in auth_password
return self.auth_handler.wait_for_response(my_event)
File "/home/centos/.local/lib/python3.7/site-packages/paramiko/auth_handler.py", line 236, in wait_for_response
raise e
paramiko.ssh_exception.AuthenticationException: Authentication failed.
我使用的 Airflow 连接有密码,没有额外的选项。
解决方案
为链接问题提供的答案适用于我的用例:
推荐阅读
- java - 如何在 XML 配置中注入 Autowired bean?
- excel - Excel VBA 动态数组
- excel - Powershell获取excel公式结果
- saml - 如何读取 SAML 编码的响应并提取名称 ID
- angular - 带有窗口宽度的角度侧边栏切换
- tensorflow - 子类化 Sequential() keras-model
- windows - 有没有办法在 chrome 上发送命令:YouTube
- angular6 - 如何在角度7中的组件之间共享一个值
- isabelle - 在 Isabelle 中调试 ML 证明
- amazon-web-services - 响应 DynamoDB 表更改的正确方法是什么?