当停止SSHTunnel服务器时,应用程序会挂起。

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

我有一个非常简单的脚本,建立与另一个主机的连接,然后创建隧道,通过这个隧道,另一个应用程序连接到SQL Server。

    self.dicSession['server'] = sshtunnel.SSHTunnelForwarder(
        ('remote_host', 22),
        ssh_username="username",
        ssh_password="password",
        ssh_private_key="key_rsa",
        remote_bind_address=('remote_host', 53425),
        local_bind_address=('localhost', 1433),
    )
    self.dicSession['server'].start()

它工作得很好。然而,停止服务器的命令,我是使用隧道(在远程主机的53425端口之间)建立连接的。当连接建立时,我使用隧道(远程主机的53425端口和本地主机的1433端口之间)连接到远程主机上运行的SQL服务器。到此为止,一切都很正常。然而,似乎停止SSH连接,用命令------------。

self.dicSession['server'].stop()

不能正常工作。尽管有停止连接的命令,我仍然能够执行SQL语句并得到结果。此外,当我在执行SQL查询后,在命令

self.dicSession['server'].stop()

应用程序--我们使用PyQT5构建的--冻结。老实说,我还没有尝试过在没有GUI的情况下运行这个脚本,但是我需要GUI,因为这个应用程序不仅是为我准备的,也是为其他不熟悉CLI的人准备的。

python ssh ssh-tunnel
1个回答
0
投票

发生这种情况是因为你的客户端仍然是开放的。

一旦你关闭了你的客户端,它将允许你停止服务器。

© www.soinside.com 2019 - 2024. All rights reserved.