This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new cdedaf3fc69 Fix encrypted private keys in async SFTP hook (#70858)
cdedaf3fc69 is described below

commit cdedaf3fc695420a373080bc60b4415b4fe22dd7
Author: Minh Vu <[email protected]>
AuthorDate: Sat Aug 1 03:46:19 2026 +0200

    Fix encrypted private keys in async SFTP hook (#70858)
    
    The documented connection extra was ignored, causing authentication 
failures when encrypted private keys were used through asynchronous SFTP 
connections.
---
 providers/sftp/src/airflow/providers/sftp/hooks/sftp.py | 6 ++++--
 providers/sftp/tests/unit/sftp/hooks/test_sftp.py       | 5 +++--
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/providers/sftp/src/airflow/providers/sftp/hooks/sftp.py 
b/providers/sftp/src/airflow/providers/sftp/hooks/sftp.py
index cbb4254c8a3..4044b39bb0f 100644
--- a/providers/sftp/src/airflow/providers/sftp/hooks/sftp.py
+++ b/providers/sftp/src/airflow/providers/sftp/hooks/sftp.py
@@ -786,8 +786,10 @@ class SFTPHookAsync(BaseHook):
             self.key_file = extra_options["key_file"]
         if "known_hosts" in extra_options and self.known_hosts != 
self.default_known_hosts:
             self.known_hosts = extra_options["known_hosts"]
-        if ("passphrase" or "private_key_passphrase") in extra_options:
-            self.passphrase = extra_options["passphrase"]
+        if "passphrase" in extra_options or "private_key_passphrase" in 
extra_options:
+            self.passphrase = extra_options.get("passphrase") or 
extra_options.get(
+                "private_key_passphrase", ""
+            )
         if "private_key" in extra_options:
             self.private_key = extra_options["private_key"]
 
diff --git a/providers/sftp/tests/unit/sftp/hooks/test_sftp.py 
b/providers/sftp/tests/unit/sftp/hooks/test_sftp.py
index bd4c2f05252..db6d8292299 100644
--- a/providers/sftp/tests/unit/sftp/hooks/test_sftp.py
+++ b/providers/sftp/tests/unit/sftp/hooks/test_sftp.py
@@ -774,13 +774,13 @@ class MockAirflowConnectionWithPrivate:
                 {
                     "private_key": "~/keys/my_key",
                     "known_hosts": "unused",
-                    "passphrase": "mypassphrase"
+                    "private_key_passphrase": "mypassphrase"
                 }
                 """
         self.extra_dejson = {
             "private_key": "~/keys/my_key",
             "known_hosts": None,
-            "passphrase": "mypassphrase",
+            "private_key_passphrase": "mypassphrase",
         }
 
 
@@ -945,6 +945,7 @@ class TestSFTPHookAsync:
         hook = SFTPHookAsync()
         await hook._get_conn()
 
+        mock_import_private_key.assert_called_once_with("~/keys/my_key", 
"mypassphrase")
         expected_connection_details = {
             "host": "localhost",
             "port": 22,

Reply via email to