From db3841ad6f90594799586991c26b01974dedf39e Mon Sep 17 00:00:00 2001 From: Martin Ortbauer Date: Wed, 9 Nov 2022 14:29:54 +0100 Subject: [PATCH] fix loading of password secured private key --- sshtunnel.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sshtunnel.py b/sshtunnel.py index 72632eb2..ebceb0b9 100644 --- a/sshtunnel.py +++ b/sshtunnel.py @@ -1063,7 +1063,7 @@ def get_agent_keys(logger=None): return list(agent_keys) @staticmethod - def get_keys(logger=None, host_pkey_directories=None, allow_agent=False): + def get_keys(logger=None, host_pkey_directories=None, allow_agent=False, ssh_pkey_password=None): """ Load public keys from any available SSH agent or local .ssh directory. @@ -1106,6 +1106,7 @@ def get_keys(logger=None, host_pkey_directories=None, allow_agent=False): if os.path.isfile(ssh_pkey_expanded): ssh_pkey = SSHTunnelForwarder.read_private_key_file( pkey_file=ssh_pkey_expanded, + pkey_password=ssh_pkey_password, logger=logger, key_type=paramiko_key_types[keytype] ) @@ -1150,7 +1151,8 @@ def _consolidate_auth(ssh_password=None, ssh_loaded_pkeys = SSHTunnelForwarder.get_keys( logger=logger, host_pkey_directories=host_pkey_directories, - allow_agent=allow_agent + allow_agent=allow_agent, + ssh_pkey_password=ssh_pkey_password or ssh_password, ) if isinstance(ssh_pkey, string_types): @@ -1315,6 +1317,7 @@ def read_private_key_file(pkey_file, if logger: logger.error('Password is required for key {0}' .format(pkey_file)) + raise break except paramiko.SSHException: if logger: