brettplarson opened a new issue #22576:
URL: https://github.com/apache/airflow/issues/22576


   ### Apache Airflow version
   
   2.2.4 (latest released)
   
   ### What happened
   
   I am trying to create an SFTP connection which includes the extra params of 
`private_key` which includes a txt output of my private key. Ie: 
`{"look_for_keys": "false", "no_host_key_check": "true", "private_key": 
"-----BEGIN OPENSSH PRIVATE KEY-----
   keygoeshere==\n----END OPENSSH PRIVATE KEY-----"}`
   
   When I test the connection I get the error `expected str, bytes or 
os.PathLike object, not Ed25519Key`
   
   When I try and use this connection I get the following error:
   
   ```
     File 
"/home/airflow/.local/lib/python3.7/site-packages/airflow/providers/sftp/hooks/sftp.py",
 line 208, in list_directory
       conn = self.get_conn()
     File 
"/home/airflow/.local/lib/python3.7/site-packages/tenacity/__init__.py", line 
324, in wrapped_f
       return self(f, *args, **kw)
     File 
"/home/airflow/.local/lib/python3.7/site-packages/tenacity/__init__.py", line 
404, in __call__
       do = self.iter(retry_state=retry_state)
     File 
"/home/airflow/.local/lib/python3.7/site-packages/tenacity/__init__.py", line 
349, in iter
       return fut.result()
     File "/usr/local/lib/python3.7/concurrent/futures/_base.py", line 428, in 
result
       return self.__get_result()
     File "/usr/local/lib/python3.7/concurrent/futures/_base.py", line 384, in 
__get_result
       raise self._exception
     File 
"/home/airflow/.local/lib/python3.7/site-packages/tenacity/__init__.py", line 
407, in __call__
       result = fn(*args, **kwargs)
     File 
"/home/airflow/.local/lib/python3.7/site-packages/airflow/providers/sftp/hooks/sftp.py",
 line 172, in get_conn
       self.conn = pysftp.Connection(**conn_params)
     File 
"/home/airflow/.local/lib/python3.7/site-packages/pysftp/__init__.py", line 
142, in __init__
       self._set_authentication(password, private_key, private_key_pass)
     File 
"/home/airflow/.local/lib/python3.7/site-packages/pysftp/__init__.py", line 
164, in _set_authentication
       private_key_file = os.path.expanduser(private_key)
     File "/usr/local/lib/python3.7/posixpath.py", line 235, in expanduser
       path = os.fspath(path)
   TypeError: expected str, bytes or os.PathLike object, not Ed25519Key
   ```
   
   This only seems to happen for Ed25519 keys. RSA worked fine!
   
   ### What you think should happen instead
   
   It should work, I don't specify this as an `Ed25519Key` I think the 
connection manager code is saving it as a paraminko key but when testing / 
using it as a DAG it is expecting a string!
   
   I don't see why you can't save it as a paraminko key and use it in the 
connection.
   
   Also it seems to work fine when using RSA keys, but super short keys are 
cooler!
   
   ### How to reproduce
   
   Create a new Ed25519 ssh key and a new SFTP connection and copy the 
following into the extra field:
   
   {"look_for_keys": "false", "no_host_key_check": "true", "private_key": 
"-----BEGIN RSA PRIVATE KEY----- Ed25519_key_goes_here -----END RSA PRIVATE 
KEY-----"}
   
   Test should yield the failure `TypeError: expected str, bytes or os.PathLike 
object, not Ed25519Key`
   
   ### Operating System
   
   RHEL 7.9 on host OS and Docker image for the rest.
   
   ### Versions of Apache Airflow Providers
   
   apache-airflow-providers-amazon==3.0.0
   apache-airflow-providers-celery==2.1.0
   apache-airflow-providers-cncf-kubernetes==3.0.2
   apache-airflow-providers-docker==2.4.1
   apache-airflow-providers-elasticsearch==2.2.0
   apache-airflow-providers-ftp==2.0.1
   apache-airflow-providers-google==6.4.0
   apache-airflow-providers-grpc==2.0.1
   apache-airflow-providers-hashicorp==2.1.1
   apache-airflow-providers-http==2.0.3
   apache-airflow-providers-imap==2.2.0
   apache-airflow-providers-microsoft-azure==3.6.0
   apache-airflow-providers-mysql==2.2.0
   apache-airflow-providers-odbc==2.0.1
   apache-airflow-providers-postgres==3.0.0
   apache-airflow-providers-redis==2.0.1
   apache-airflow-providers-sendgrid==2.0.1
   apache-airflow-providers-sftp==2.4.1
   apache-airflow-providers-slack==4.2.0
   apache-airflow-providers-sqlite==2.1.0
   apache-airflow-providers-ssh==2.4.0
   
   ### Deployment
   
   Other Docker-based deployment
   
   ### Deployment details
   
   Docker image of 2.2.4 release with VERY minimal changes. (wget, curl, etc 
added)
   
   ### Anything else
   
   RSA seems to work fine... only after a few hours of troubleshooting and 
writing this ticket did I learn that. 😿
   
   ### Are you willing to submit PR?
   
   - [ ] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [X] I agree to follow this project's [Code of 
Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to