我很难描述这个错误,抱歉冗长的解释:
我有一个成功、有效、稳定的反向 AutoSSH 解决方案,固定在客户端 Beagle 板和服务器之间。 beagle 板位于 GCN NATed 3G 连接上,服务器具有真实的可路由 IPv4 地址。我通过在服务器的 sshd_config 文件上设置“GatewayPorts Yes”来允许直接连接到我的服务(即直接通过充当代理的服务器)。
该解决方案工作得非常好,并且对于各种断开连接都非常耐用......除了这一点:即使在错误期间,反向 AutoSSH 会话仍然处于活动状态,但服务器上的网关端口保持沉默。我认为错误完全包含在服务器中。 AutoSSH 客户端永远不会看到该错误,也不会尝试更正它。
这是输出netstat-anp在服务器上。我在端口 64、65、66 上固定了三个反向 autoSSH 会话。请注意服务器侦听端如何丢失端口 64,它当前遇到错误。我对输出进行了简化和匿名化。事实上,反向端口数高达 30000。
AutoSSH服务器IP:1.1.1.1
AutoSSH 客户端 BeagleBoard 的 ISP IP(记住该设备实际上无可救药地位于 GNC 和 NAT 后面):2.2.2.2
我使用 AutoSSH 代理服务之一:3.3.3.3
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 1.1.1.1:22 2.2.2.2:46154 ESTABLISHED -
tcp 0 0 1.1.1.1:22 2.2.2.2:54006 ESTABLISHED -
tcp 0 0 1.1.1.1:22 2.2.2.2:39334 ESTABLISHED -
tcp 0 0 1.1.1.1:65 3.3.3.3:29860 ESTABLISHED -
tcp6 0 0 :::65 :::* LISTEN -
tcp6 0 0 :::66 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
*注意端口 64 丢失,但 AutoSSH 客户端固定了三个反向SSH 会话。在手动重置 ReverseSSH 会话之前,我无法访问端口 64 服务。
我能够从中恢复的唯一方法是通过我选择的任何方法终止现有的 SSH 隧道(等待 3G 提供商终止已建立的 SSH 会话、终止客户端上的 ssh 进程、弹跳网络端口、重新启动服务器上的 SSHD、重新启动客户端或服务器等...)。 AutoSSH 自动恢复,ReverseSSHed 服务重新出现在 LISTENING 端:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 1.1.1.1:22 2.2.2.2:46154 ESTABLISHED -
tcp 0 0 1.1.1.1:22 2.2.2.2:54006 ESTABLISHED -
tcp 0 0 1.1.1.1:22 2.2.2.2:39334 ESTABLISHED -
tcp 0 0 1.1.1.1:65 3.3.3.3:29860 ESTABLISHED -
tcp6 0 0 :::64 :::* LISTEN -
tcp6 0 0 :::65 :::* LISTEN -
tcp6 0 0 :::66 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
*注意端口 64 在退回所有连接后已返回。
所有 ReverseSSHed 服务都会随机发生这种情况。这三种服务中的任何一种平均每天大约一次。
知道什么可能导致此问题或从哪里开始查看日志? SSH 日志并不表明失败。
感谢您的见解。