1
我正在尝试编写一个go应用程序,该应用程序允许我使用go ssh库在Windows计算机和Linux计算机之间执行反向ssh隧道。SSH侦听器不关闭
在这样做的过程中,我创建远程机器上的监听器,如下: remoteListener, err := sshClient.Listen("tcp", remoteString)
其中sshClient是类型ssh.Client的目的,并且被配置以连接到远程计算机。
这里的问题是,当Linux机器上的sshd进程中断与应用程序的连接时,ssh Listener在远程机器上保持活动状态。因此,重新连接应用程序会失败,因为侦听器已经在远程计算机的同一端口上运行。
我该如何解决这个问题? ssh库是否允许我定义侦听器的超时?
你如何关闭远程机器的会话?如果会话已终止,则ssh服务器应清理连接。 - – JimB
我通过使用以下命令阻止端口2222上的ssh连接(我正在sshing的端口)来测试ssh失败: 'sudo iptables -D INPUT -p tcp --dport 2222 -j DROP' 。这似乎并没有清理已终止的会话。 – shreyashk
如果您只丢弃数据包,则远程服务器无法知道您已终止会话。 – JimB