如何使用python';连接到仅运行telnet的路由器的sshtunnel?
我必须连接到jumpserver,才能连接到一堆只运行telnet的路由器。我不熟悉SSH隧道,但我发现在本地计算机的命令行上,以下命令构成了必要的隧道:如何使用python';连接到仅运行telnet的路由器的sshtunnel?,python,ssh,ssh-tunnel,telnetlib,Python,Ssh,Ssh Tunnel,Telnetlib,我必须连接到jumpserver,才能连接到一堆只运行telnet的路由器。我不熟悉SSH隧道,但我发现在本地计算机的命令行上,以下命令构成了必要的隧道: $ ssh -fNL 2300:remote_host:23 user@jumpServer 然后,我所要做的就是连接到本地计算机上的端口2300,以便将流量转发到路由器上的端口23(该路由器没有SSH,只有telnet): 我有几个问题: 实际的隧道在哪里形成?正如我所说,路由器的端口22被阻塞了,也就是说,它不能运行SSH。但是,我的本
$ ssh -fNL 2300:remote_host:23 user@jumpServer
然后,我所要做的就是连接到本地计算机上的端口2300,以便将流量转发到路由器上的端口23(该路由器没有SSH,只有telnet):
我有几个问题:
sshtunnel
模块以编程方式执行此操作?我尝试了以下方法:如何制作python
ssh-fnl2300:remote_host:23user@jumpServer
手动?除了在telnet中使用“localhost”之外,您的代码一切正常:
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:
# Use localhost as host
with Telnet('localhost', tunnel.local_bind_port, 10) as tn:
tn.interact()
原因是该端口被转发到本地主机,必须从该端口访问。对于您的问题1和2,您是对的。要在Python中实现这一点,请使用telnet lib()中的示例2。@Karioki在我的例子中,您能用IPs修改示例吗?我有点困惑应该在哪里使用哪个IP。
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()
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:
# Use localhost as host
with Telnet('localhost', tunnel.local_bind_port, 10) as tn:
tn.interact()