I using paramiko to connect to Server1 and then from Server1 to Server2 because I only have access to Server2 from Server1 not from my local computer.
So I want to upload an file from my local computer on Server2.
To achieve this I tryd it with this code:
import paramiko
# paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)
# Verbindung zum ersten Server herstellen
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('server1', username='user', password='passwort123')
# Verbindung zum zweiten Server herstellen und eine SFTP-Sitzung öffnen
session1_transport = ssh.get_transport()
session1 = session1_transport.open_session()
session1.set_combine_stderr(True)
session1.get_pty()
session1.exec_command('ssh usernamev@server2')
# SSH-Verbindung zum zweiten Server herstellen und den Transport erhalten
session2 = session1.invoke_shell()
session2_transport = paramiko.Transport(sock=session2)
session2_transport.start_client()
session2_transport.auth_none('username')
session2_transport.auth_password(username='username', password='password123')
# SFTP-Verbindung zum zweiten Server herstellen
sftp = paramiko.SFTPClient.from_transport(session2_transport)
# Datei auf den zweiten Server hochladen
local_path = r"localpath/file"
remote_path = r"remotepath/file"
sftp.put(local_path, remote_path)
# SFTP-Verbindung und Sessions schließen
sftp.close()
session2_transport.close()
session1.close()
ssh.close()
The problem with this is that it always crash here:
session2 = session1.invoke_shell()
The problem is that: paramiko.ssh_exception.SSHException: Channel closed.
I also tryd it with this code:
import paramiko
import os
# Verbindung zum ersten Server herstellen
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('server1', username='user', password='passwort')
# Verbindung zum zweiten Server herstellen und eine SFTP-Sitzung öffnen
transport = ssh.get_transport()
session1 = transport.open_session()
session1.set_combine_stderr(True)
session1.get_pty()
session1.exec_command('ssh userv@server2')
session2 = transport.open_session()
session2.set_combine_stderr(True)
session2.get_pty()
session2.exec_command('sftp server2')
# SFTP-Verbindung zum zweiten Server herstellen
sftp = paramiko.SFTPClient.from_transport(transport)
# Datei auf den zweiten Server hochladen
local_path = r"localpath/file"
remote_path = r"/path/to/remote/file/on/server2"
sftp.put(local_path, remote_path)
# SFTP-Verbindung und Sessions schließen
sftp.close()
session2.close()
session1.close()
ssh.close()
but with that I only can upload to server1 and not to server2
anyone an Idea what Ive been missing?