我有一个非常简单的脚本,建立与另一个主机的连接,然后创建隧道,通过这个隧道,另一个应用程序连接到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的人准备的。
发生这种情况是因为你的客户端仍然是开放的。
一旦你关闭了你的客户端,它将允许你停止服务器。