如何使用python的sshtunnel连接到仅运行telnet的路由器?

问题描述 投票:0回答:1

我必须连接到Jumpserver,才能连接到仅运行telnet的一堆路由器。我是SSH隧道的新手,但我发现在本地计算机的命令行上,以下命令形成了必要的隧道:

$ ssh -fNL 2300:remote_host:23 user@jumpServer

然后,我要做的就是连接到本地计算机上的端口2300,以将流量转发到路由器上的端口23(该端口没有SSH,只有telnet):

> telnet localhost 2300

我有几个问题:

  1. 实际的隧道在哪里形成?就像我说的那样,路由器的端口22被阻止,即它无法运行SSH。但是,我的本地计算机和网关/跳转服务器可以。那么,如果隧道在我的本地计算机和跳转服务器之间形成,那么跳转服务器和路由器之间的传输方式是什么?
  2. 如果我理解正确,则本地计算机上的侦听器在端口2300上,该侦听器通过SSH隧道将所有流量转发到跳转服务器上的某个端口,然后将其转发到路由器。对?
  3. [[Python特定问题]如何获得sshtunnel模块以编程方式执行此操作?我尝试了以下方法:
from sshtunnel import open_tunnel
from telnetlib import Telnet

js = '123.456.555.666'
js_usr = "user"
rem_host = '123.456.789.101'

with open_tunnel(
    ssh_address_or_host=(js, 22),
    ssh_username=js_usr,
    ssh_password="password",
    remote_bind_address=(rem_host, 23)
) as tunnel:
    with Telnet(js, tunnel.local_bind_port, 10) as tn:
        tn.interact()

但是,这会引发以下错误:

追踪(最近通话):在第14行的“ C:/Users/somsinha/PycharmProjects/SysTEst/sshTunnelTest.py”文件中使用Telnet(js,tunnel.local_bind_port,10)作为tn:

文件“ C:\ Users \ somsinha \ bin \ WPy64-3741 \ python-3.7.4.amd64 \ lib \ telnetlib.py”,第218行,在[[init]]中self.open(主机,端口,超时)文件“ C:\ Users \ somsinha \ bin \ WPy64-3741 \ python-3.7.4.amd64 \ lib \ telnetlib.py”,第234行,处于打开状态self.sock = socket.create_connection((host,port),timeout)

文件“ C:\ Users \ somsinha \ bin \ WPy64-3741 \ python-3.7.4.amd64 \ lib \ socket.py”,行727,在create_connection中提高错误

文件“ C:\ Users \ somsinha \ bin \ WPy64-3741 \ python-3.7.4.amd64 \ lib \ socket.py”,行716,在create_connection中sock.connect(sa)

ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了它

如何手动制作python ssh -fNL 2300:remote_host:23 user@jumpServer

我必须连接到Jumpserver,才能连接到仅运行telnet的一堆路由器。我是SSH隧道的新手,但我已经在本地计算机的命令行上发现了以下内容。
python ssh ssh-tunnel telnetlib
1个回答
0
投票
您的代码一切正常,但使用时应在telnet中使用“ localhost”]
© www.soinside.com 2019 - 2024. All rights reserved.