Python PYSFTP - передать закрытый ключ как строку / текст вместо передачи пути к файлу - PullRequest
1 голос
/ 10 июля 2020

Я хотел бы передать свое фактическое значение закрытого ключа в качестве аргумента вместо указания пути к файлу.

На данный момент я использовал приведенный ниже код:

def upload_file_to_remote(hostname, port, username, password, private_key_filepath, localpath, remotefolder, host_keys):
    import pysftp
    import os
    
    if password=="None":
        password=None
        
    try:
        
        cnopts = pysftp.CnOpts()
        if str(host_keys).lower() =='none':
            cnopts.hostkeys = None
        else:
            cnopts.hostkeys.load(hostkeys)
        filename = os.path.basename(localpath)
        print(filename)
        remotepath = os.path.join(remotefolder, filename)
        print(remotepath)
        with pysftp.Connection(host=hostname, port=int(port), username=username, password=password, cnopts=cnopts,private_key=private_key_filepath) as sftp:
            print sftp
            sftp.put(localpath, remotepath=remotepath)
    except IOError as e:
        result="SFTP Failed "+str(e)
        return result
    except pysftp.exceptions.ConnectionException as e:
        return "SFTP Failed "+str(e)
    except pysftp.exceptions.CredentialException as e:
        return "SFTP Failed "+str(e)
    except pysftp.exceptions.HostKeysException as e:
        return "SFTP Failed "+str(e)
    except Exception as e:
        return "SFTP Failed "+str(e)
    return {'status':'pass','result' : remotepath}
    
    #print(upload_file_to_remote(hostname, port, username, password, private_key_filepath, localpath, remotefolder,host_keys))


upload_file_to_remote(hostname, port, username, password, private_key_filepath, localpath, remotefolder, host_keys)

Пожалуйста, предложите некоторые способ передать его как текст.

Пример:

private_key='abcdmyprivatekeytext'

upload_file_to_remote(hostname, port, username, password, private_key, localpath, remotefolder, host_keys)

В реальном сценарии я помещу свой текст закрытого ключа в безопасное хранилище.

1 Ответ

0 голосов
/ 11 июля 2020

Кажется, это невозможно с интерфейсом pysftp.

Но вы можете это сделать, если используете Paramiko напрямую: SSH / SCP через Paramiko с ключом в строке

pysftp - это просто оболочка вокруг Paramiko. См. pysftp против Paramiko

...