python - 使用 Python Paramiko 的嵌套 SSH

标签 python ssh nested paramiko

我有这种情况:

本地主机--------跳转主机--------目标机

我正在尝试使用 Paramiko 在 Python 中编写代码,首先通过 SSH 从本地主机到跳转主机,然后通过 SSH 从跳转主机到目标机器。 从目标机器上,我想捕获一些输出并将它们作为变量或文件存储在本地(尚未达到这一点)。 我从 Stack Overflow 中找到了一个示例,他们在其中讨论了将嵌套 SSH 与 Paramiko 结合使用,我遵循了它,但我被困在这里:

我的代码:

enter code here

#!/usr/bin/python
#
# Paramiko
#
import paramiko
import sys
import subprocess
#
# we instantiate a new object referencing paramiko's SSHClient class
#
vm=paramiko.SSHClient()
vm.set_missing_host_key_policy(paramiko.AutoAddPolicy())
vm.connect('192.168.115.103',username='osmanl',password='xxxxxx')
#
vmtransport = vm.get_transport()
dest_addr = ('192.168.115.103', 22)
local_addr = ('127.0.0.1', 22)
vmchannel = vmtransport.open_channel("direct-tcpip", dest_addr, local_addr)
#
jhost=paramiko.SSHClient()
jhost.set_missing_host_key_policy(paramiko.AutoAddPolicy())
jhost.load_host_keys('/home/osmanl/.ssh/known_hosts')
jhost.connect('10.103.53.26', username='latiu', password='xxxx', sock=vmchannel)
#
stdin, stdout, stderr = rtr.exec_command("show version | no-more")
#
print stdout.readline()
#
jhost.close()
vm.close()
# End

当我运行上面的代码时,我得到了这个错误:

$ python sshvm.py
Traceback (most recent call last):
  File "sshvm.py", line 28, in <module>
    jhost.load_host_keys('/home/osmanl/.ssh/known_hosts')
  File "/usr/lib/python2.7/site-packages/paramiko-1.15.2-py2.7.egg/paramiko/client.py", line 121, in load_host_keys
    self._host_keys.load(filename)
  File "/usr/lib/python2.7/site-packages/paramiko-1.15.2-py2.7.egg/paramiko/hostkeys.py", line 94, in load
    with open(filename, 'r') as f:
IOError: [Errno 2] No such file or directory: '/home/osmanl/.ssh/known_hosts'

最佳答案

尝试下面编辑过的代码,它应该可以工作:

#!/usr/bin/python
#
# Paramiko
#
import paramiko
import sys
import subprocess
#
# we instantiate a new object referencing paramiko's SSHClient class
#
vm = paramiko.SSHClient()
vm.set_missing_host_key_policy(paramiko.AutoAddPolicy())
vm.connect('192.168.115.103', username='osmanl', password='xxxxxx')
#
vmtransport = vm.get_transport()
dest_addr = ('10.103.53.26', 22) #edited#
local_addr = ('192.168.115.103', 22) #edited#
vmchannel = vmtransport.open_channel("direct-tcpip", dest_addr, local_addr)
#
jhost = paramiko.SSHClient()
jhost.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#jhost.load_host_keys('/home/osmanl/.ssh/known_hosts') #disabled#
jhost.connect('10.103.53.26', username='latiu', password='xxxx', sock=vmchannel)
#
stdin, stdout, stderr = jhost.exec_command("show version | no-more") #edited#
#
print stdout.read() #edited#
#
jhost.close()
vm.close()
# End

关于python - 使用 Python Paramiko 的嵌套 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35304525/

相关文章:

python - sys.setdefaultencoding ('utf-8' 的危险)

python - 如何一次写入多个 csv 行?

python - 为 Python 2.6 安装 Dropbox API 时遇到问题

python - 无法强制 scrapy 使用重定向的 url 进行回调

c++ - 在函数中使用函数

php - 从复杂的嵌套 JSON 对象获取数据(使用 PHP)

linux - root怎么可能使用别人的私钥登录呢?

docker - 通过 ssh 的 Portainer 端点

ssh - 如何使 SSH RSA key 自动接受?

java - Gson 嵌套对象内的嵌套对象