[asyncssh]:使用python asyncssh的反向ssh隧道

时间:2019-11-21 15:48:09

标签: paramiko python-asyncio

我希望在python3.7(asyncio)中使用asyncssh

这是我要构建的:

远程设备将运行客户端,该客户端对集中式服务器进行回拨。我希望服务器能够使用传入连接上的反向ssh隧道在客户端上执行命令。我不能使用正向ssh(常规ssh),因为客户端可能位于NAT之后,服务器可能不知道客户端的地址。我希望客户端先进行呼叫通知,然后由服务器管理客户端。

用于POC的程序应使用python3 + ssh的异步实现。我认为asyncssh是唯一可行的选择(如果有其他选择,请提出建议):

客户端:连接到服务器并接受在同一出站连接上打开反向ssh隧道

服务器:接受来自客户端的连接,并使会话保持打开状态。然后,服务器打开到客户端的反向ssh隧道。例如服务器程序应在传入连接上打开3个反向ssh通道。每个隧道都将运行一个命令['ls','sleep 30 && date','sleep 5 && cat / proc / cpuinfo']

服务器程序应为每个命令打印收到的响应(一个应立即返回,另一个应在5之后,另一个在30之后)。

我查看了文档,但看不到使用多个反向ssh隧道的示例。

任何人都有使用此软件的经验吗?你能给我指出例子吗?

1 个答案:

答案 0 :(得分:0)

asyncssh的开发人员提供了一个示例:

到目前为止,这是在develop分支中。我已经对其进行了测试,它可以完美地完成工作!

https://asyncssh.readthedocs.io/en/develop/#reverse-direction-example

[如果过一会儿再检查,您可能会在主文档中找到它。]