Estoy intentando conectarme a un SFTP a través de Paramiko con una clave SSH protegida por contraseña. He cargado la clave en Pageant (que entiendo que es compatible con Paramiko) pero no puedo descifrar mi clave privada.
He encontrado este ejemplo aquí que hace referencia a allow_agent=True
pero esto no parece ser un parámetro que pueda usarse con el SFTPClient
.
¿Alguien puede avisar si es posible trabajar con Paramiko y Pageant de esta manera?
Este es mi código en este momento, lo que genera PasswordRequiredException
privatekeyfile = 'path to key' mykey = paramiko.RSAKey.from_private_key_file(privatekeyfile) transport = paramiko.Transport(('host', 'port')) transport.connect('username',pkey = mykey) sftp = paramiko.SFTPClient.from_transport(transport)
PKey.from_private_key_file
una frase de contraseña cuando cargue una clave encriptada utilizando el PKey.from_private_key_file
.
Aunque tenga en cuenta que no tiene que cargar la clave en absoluto , cuando use el Pageant. Ese es el punto de usar un agente de autenticación. Pero solo la clase SSHClient
compatible con el concurso. La clase de Transport
no lo hace, por sí sola.
Puedes seguir el código en ¿Cómo usar Pageant con Paramiko en Windows?
Aunque como el allow_agent
es True
por defecto, en realidad no hay nada especial en el código.
Una vez conectado y autenticado, use el método SSHClient.open_sftp
para obtener su instancia del SFTPClient
.
ssh = paramiko.SSHClient() ssh.connect(host, username='user', allow_agent=True) sftp = ssh.open_sftp()
También necesitarás verificar la clave de host:
Paramiko “Servidor Desconocido”