【问题标题】:SSH twice with Python [duplicate]使用 Python 进行两次 SSH [重复]
【发布时间】:2020-09-01 08:59:30
【问题描述】:

我想先在 host1 上 SSH,然后 SSH 到 host2 来获取一些文件。 SSH 通过使用 Paramiko 来托管一个是成功的。但是当我和host1做同样的事情时,它不能SSH到host2。它显示“无法建立 SSH 连接:在 known_hosts 中找不到服务器 'host2'”

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!!!")

我也尝试使用命令进入主机 2,但它始终在主机 1 中。不确定这是不是正确的做法。请推荐我该怎么做。谢谢。

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

【问题讨论】:

    标签: python ssh paramiko


    【解决方案1】:

    对于初始连接,SSH 会询问您是否信任远程计算机。当您键入 yes 时,它会存储在 ~/.ssh/known_hosts

    在您运行脚本的系统上,尝试在控制台中手动建立 SSH 连接,让它将服务器的信息存储在该文件中,然后启动您的程序。

    【讨论】:

      猜你喜欢
      • 2014-02-28
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 2011-12-25
      相关资源
      最近更新 更多