Connect to SFTP with key file using Python pysftp

26,651

Solution 1

To connect using a key file, you will want to pass the path to the key file when creating the connection. To do this, you'll set the parameter "private_key" to the path to the file.

Your code above should look something like this:

srv = pysftp.Connection(host="you_FTP_server", username="your_username", private_key="./Path/To/File")

When pySFTP initiates the connection, it will try to use the file you passed in. If it fails because of the keyfile, it will throw an authentication exception.

Here's the link to where I found the answer: https://pysftp.readthedocs.io/en/release_0.2.7/pysftp.html.

Solution 2

It's important to specify that "password" is only used if server has a password. In case is your private key the one protected with password, you must use "private_key_pass" instead.

So to connect to a remote server with public/private key you need:

1) upload public key to server

2) create a connection with your private key + private key password:

srv = pysftp.Connection(host="host", username="username", private_key="file_with_private_key", private_key_pass="password")
Share:
26,651
rubio119
Author by

rubio119

Updated on August 13, 2020

Comments

  • rubio119
    rubio119 almost 4 years

    I need to connect to a SFTP, download the most recent file, then change the file name and load again to the same SFTP folder and delete the 'original name' file. I have done this with FTP with user and password, however in this case, the SFTP has a key file (.ppk). How can set the key file as password?

    Thank you!

    import pysftp
    
    srv = pysftp.Connection(host="your_FTP_server", username="your_username",
    password="your_password")
    
    # Get the directory and file listing
    data = srv.listdir()
    
    # Closes the connection
    srv.close()
    
    # Prints out the directories and files, line by line
    for i in data:
       print i