Skip to content

Instantly share code, notes, and snippets.

@aidnurs
Created June 4, 2023 14:56
Show Gist options
  • Save aidnurs/d901f3a431c3af01d3da51a378579b28 to your computer and use it in GitHub Desktop.
Save aidnurs/d901f3a431c3af01d3da51a378579b28 to your computer and use it in GitHub Desktop.
Nested SSH using Python Paramiko and pysftp
import pysftp
import paramiko
# SSH jump server details
jump_server_host = '<host>'
jump_server_username = '<user>'
jump_server_password = '<password>'
# SFTP server details
sftp_server_host = '<host>'
sftp_server_username = '<user>'
sftp_server_password = '<password>'
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
jump_server = pysftp.Connection(cnopts=cnopts,
host=jump_server_host,
username=jump_server_username,
password=jump_server_password,
port=22)
jump_sftp_client = jump_server.sftp_client
transport = jump_sftp_client.get_channel().get_transport()
dest_addr = (sftp_server_host, 22)
local_addr = ('localhost', 0)
channel = transport.open_channel("direct-tcpip", dest_addr, local_addr)
sftp = paramiko.SSHClient()
sftp.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sftp.connect(sftp_server_host, username=sftp_server_username, password=sftp_server_password, sock=channel)
sftp_client = sftp.open_sftp()
files = sftp_client.listdir('.')
for file in files:
print(file)
sftp.close()
jump_server.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment