Everyday I am uploading files to SFTP server using WinSCP. I decided to use Python to automate this process. This SFTP has host, username, port, and .ppk file
I found a code, but it didn't work. It says
SSHException: not a valid DSA private key file
import pysftp
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
HOST = 'HOST'
USERNAME = 'USERNAME'
PRIVATE_KEY = 'file.ppk'
PORT = 1111
srv = pysftp.Connection(host = HOST,
username = USERNAME,
private_key = PRIVATE_KEY,
port = PORT
cnopts = cnopts)
data = srv.listdir()
srv.close()
for i in data:
print(i)
What should I do? I know how to upload files etc I just would like to know how to connect the SFTP.
Here is how .ppk file looks like.
PuTTY-User-Key-File-3: ssh-rsa
Encryption: none
Comment: rsa-key-20220408
Public-Lines: 6
AAAAB3NzaC1yc2EAAAADAQABAAABAQCKXdZXgtuaGfRayz7cz6bFkXWhVmbmGebJ
XFND5bIz73/cemi8TPiU7yLt7HiZNh189kOCRYrz51zX3JDi7s8tQp4pa2LsJ2jn
YeTTAXS2HzxL0aDWzom22A7FaHVAHTO48o9MzjdEek+0Mi2taZMy7hKQqCJUAl9U
5zQrbRvczyCRlp0N824lUfkCXvOs4ib92YzEhOgfnG7aH9rLdft5T2CyBMmT2c4P
bybKp2m8tl17ClAzQUQC6JfxTO3Kd0Zvw1AQmD8pqkr6pbp3a+pWOd/PLG+8NniJ
0ipbFhaq0ptn3iCaMbUySF1R1J3CIlrTM51fhH/knTwKV9A3zscD
Private-Lines: 14
...
Private-MAC: 16d619f3cca3b69ea882fc95b7f5b3a153aeb455af4e9cfc56a5a85bf6fce2b3
For your literal problem, see:
How to ssh connect through Python Paramiko with ppk public key
It's about Paramiko. But pysftp is just a thin wrapper around Paramiko. And you should not use pysftp anyway, it's dead. See pysftp vs. Paramiko.
Though note, that as you have WinSCP working, you can automate your task using WinSCP scripting.
WinSCP GUI can even generate a working script template for you.