使用 Python SSH 两次
SSH twice with Python
我想先在主机 1 中通过 SSH,然后通过 SSH 到主机 2 以获取一些文件。使用 Paramiko 通过 SSH 托管一个是成功的。但是当我对 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!!!")
我也试过使用命令进入host2,但它一直在host1。不确定这是正确的做法。请推荐我该怎么做。谢谢。
stdin1, stdout1, stderr1 = client.exec_command('ssh user2@host2;pass2;cd /;ls')
rawd = stdout1.read().decode('ascii').strip("\n")
print(rawd)
对于初始连接,SSH 会询问您是否信任远程计算机。当您键入 yes 时,它会存储在 ~/.ssh/known_hosts
.
中
在您 运行 脚本所在的系统上,尝试在控制台中手动建立 SSH 连接,让它在该文件中存储服务器的信息,然后启动您的程序。
我想先在主机 1 中通过 SSH,然后通过 SSH 到主机 2 以获取一些文件。使用 Paramiko 通过 SSH 托管一个是成功的。但是当我对 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!!!")
我也试过使用命令进入host2,但它一直在host1。不确定这是正确的做法。请推荐我该怎么做。谢谢。
stdin1, stdout1, stderr1 = client.exec_command('ssh user2@host2;pass2;cd /;ls')
rawd = stdout1.read().decode('ascii').strip("\n")
print(rawd)
对于初始连接,SSH 会询问您是否信任远程计算机。当您键入 yes 时,它会存储在 ~/.ssh/known_hosts
.
在您 运行 脚本所在的系统上,尝试在控制台中手动建立 SSH 连接,让它在该文件中存储服务器的信息,然后启动您的程序。