以编程方式关闭 Paramiko 中的 SSH 隧道

2024-01-08

我们尝试使用 paramiko 模块按需创建到任意服务器的 SSH 隧道,以查询远程数据库。我们尝试使用 paramiko 附带的forward.py 演示,但最大的限制是,一旦套接字服务器启动,似乎没有一种简单的方法可以关闭 SSH 隧道和 SSH 连接。

我们的限制是我们无法从 shell 激活它,然后手动终止 shell 以停止监听器。我们需要打开 SSH 连接、隧道,通过隧道执行一些操作,关闭隧道,并在 python 中关闭 SSH 连接。

我已经看到对 server.shutdown() 方法的引用,但不清楚如何正确实现它。


我不确定你所说的“正确实现”是什么意思——你只需要跟踪服务器对象并调用shutdown当你想要的时候就可以了。在forward.py,服务器不会被跟踪,因为最后一行forward_tunnel is

ForwardServer(('', local_port), SubHander).serve_forever()

因此服务器对象不再容易访问。但你可以将其更改为,例如:

global theserver
theserver = ForwardServer(('', local_port), SubHander)
theserver.serve_forever()

并运行forward_tunnel函数在一个单独的线程中,这样main函数重新获得控制权(而serve_forever在所述单独的线程中运行)并且可以调用theserver.shutdown()每当适当和需要时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式关闭 Paramiko 中的 SSH 隧道 的相关文章

随机推荐