SFTP with paramiko

SSH can be used to securely transfer files between two computer nodes. The protocol that's used in this case is the secure file transfer protocol (SFTP). The Python paramiko module will supply the classes that are required to create the SFTP session. This session can then perform a regular SSH login:

ssh_transport = paramiko.Transport(hostname, port)
ssh_transport.connect(username='username', password='password')

The SFTP session can be created from the SSH transport. The paramiko working in the SFTP session will support the normal FTP commands, such as the get() command:

sftp_session = paramiko.SFTPClient.from_transport(ssh_transport)
sftp_session.get(source_file, target_file)

As you can see, the SFTP get command requires the source file's path and the target file's path. In the following example, the script will download a test.txt file that's located in the server, which is located on the user's home directory through SFTP.

You can find the following code in the ssh_download_sftp.py file:

#!/usr/bin/env python3

import getpass
import paramiko

HOSTNAME = 'ssh_server'
PORT = 22
FILE_PATH = '/tmp/test.txt'

def sftp_download(username, password, hostname=HOSTNAME,port=PORT):
ssh_transport = paramiko.Transport(hostname, port)
ssh_transport.connect(username=username, password=password)
sftp_session = paramiko.SFTPClient.from_transport(ssh_transport)
file_path = input("Enter filepath: ") or FILE_PATH
target_file = file_path.split('/')[-1]
sftp_session.get(file_path, target_file)
print("Downloaded file from: %s" %file_path)
sftp_session.close()

if __name__ == '__main__':
hostname = input("Enter the target hostname: ")
port = input("Enter the target port: ")
username = input("Enter your username: ")
password = getpass.getpass(prompt="Enter your password: ")
sftp_download(username, password, hostname, int(port))

In this example, a file has been downloaded with the help of SFTP. Notice how paramiko has created the SFTP session by using the SFTPClient.from_transport(ssh_transport) class.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset