【问题标题】:SSH Listener not closingSSH 侦听器未关闭
【发布时间】:2017-01-30 15:22:42
【问题描述】:

我正在尝试编写一个 go 应用程序,它允许我使用 go ssh 库在 Windows 机器和 Linux 机器之间执行反向 ssh 隧道。

在这样做的过程中,我在远程机器上创建了一个监听器,如下: remoteListener, err := sshClient.Listen("tcp", remoteString)

其中 sshClient 是 ssh.Client 类型的对象,并被配置为连接到远程机器。

这里的问题是,当 Linux 机器上的 sshd 进程中断与应用程序的连接时,远程机器上的 ssh Listener 仍然存在。因此,重新连接应用程序会失败,因为侦听器已经在远程机器上的同一端口上运行。

如何解决这个问题? ssh 库是否允许我在侦听器上定义超时?

【问题讨论】:

  • 如何关闭与远程机器的会话?如果会话已终止,则 ssh 服务器应该正在清理连接。 ——
  • 我正在通过使用以下命令阻止端口 2222(我正在使用 ssh 的端口)上的 ssh 连接来测试 ssh 故障:sudo iptables -D INPUT -p tcp --dport 2222 -j DROP。这似乎没有清理终止的会话。
  • 如果你只是丢包,远程服务器无法知道你已经终止了会话。

标签: networking go ssh


【解决方案1】:

我只是在重新连接后等待超时。我没有找到其他简单的解决方案。

【讨论】:

    猜你喜欢
    • 2021-04-14
    • 2012-08-23
    • 2021-08-02
    • 2013-12-20
    • 2019-01-24
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    相关资源
    最近更新 更多