-1

I would like to SSH in host1 first then SSH to host2 to get some files. SSH to host one by using Paramiko was success. But when I did the same as host1, it cannot SSH to host2. It shows 'Unable to establish SSH connection: Server 'host2' not found in known_hosts'

import paramiko
from paramiko.ssh_exception import AuthenticationException, SSHException, BadHostKeyException
try:
    client = paramiko.SSHClient()
    client.load_system_host_keys()
    client.connect('host1', username='user1', password='pass1', timeout=5)
    print ("Accessed host1 already")
    try:
        client2 = paramiko.SSHClient()
        client2.load_system_host_keys()
        client2.connect('host2', username='user2', password='pass2', timeout=5)
        print ("Accessed host2 already")

    except AuthenticationException:
        print("Authentication failed, please verify your credentials: %s")
    except SSHException as sshException:
        print("Unable to establish SSH connection: %s" % sshException)
    except BadHostKeyException as badHostKeyException:
        print("Unable to verify server's host key: %s" % badHostKeyException)
    except Exception as e:
        print("Operation error: %s" % e)
except :
    print ("SSH to host1 failed!!!")

Also I tried using command to get into host2 but it is still in host1 all the time. Not sure is this the right way to do. Please recommend how can I do. Thank you.

stdin1, stdout1, stderr1 = client.exec_command('ssh user2@host2;pass2;cd /;ls')
rawd = stdout1.read().decode('ascii').strip("\n")
print(rawd)
IDa
  • 13
  • 2

1 Answers1

1

For an initial connection, SSH asks if you trust the remote computer. When you type yes, it gets stored in ~/.ssh/known_hosts.

On the system where you run the script, try making a SSH connection manually in console, let it store the server's info in that file, then start your program.

mike.k
  • 3,277
  • 1
  • 12
  • 18