SSH 服务器随机停止接受连接

SSH 服务器随机停止接受连接

我已经在工作场所的计算机上设置了一个 ssh 服务器,以便我可以远程工作,并且它运行良好。

但有时(大约每隔一周一次),当我使用 ssh 连接时,它会突然停止。发生这种情况时,服务器将永远不会再接受任何 ssh 连接,除非我手动重新启动它。

编辑:更准确地说,它不会“拒绝”连接,只是永远卡住

我确信一定有一些方法可以解决这种情况,这样我就不必每次遇到这种情况时都亲自坐在电脑前。你对此有什么建议吗?

这是 ssh 连接失败时的详细输出:

OpenSSH_7.2p2 Ubuntu-4ubuntu2.10, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /home/hedi/.ssh/config
debug1: /home/hedi/.ssh/config line 6: Applying options for inubushiPC
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 133.11.35.15 [133.11.35.15] port 22.
debug1: Connection established.
debug1: identity file /home/hedi/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/hedi/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/hedi/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/hedi/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/hedi/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/hedi/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/hedi/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/hedi/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.10

答案1

症状与 Linux VPS 在关闭交换的情况下内存耗尽的情况非常相似。通常是由于某个进程消耗了太多内存,以至于系统无法再提供更多内存,但该进程不会崩溃,只是卡住了。任何新的 SSH 连接(甚至其他 TCP 连接)都需要一些内存来初始化,但剩余内存不足,初始化根本无法完成(不过我不知道这背后的深层原因)。

您可以使用一些监控解决方案来确认您的机器发生这种情况时的实际情况。最简单的方法可能是在顶上,它可以定期记录机器的状态(进程的 CPU/RAM 使用情况...)并将其写入文件。您可以在下次重新启动后查阅此文件,以确保内存不足,以及哪些进程使用了​​过多的内存。缺点是您通常只能访问机器上的日志,即您只能分析它机器发生故障,您(手动)重新启动它。您可以将其与一些将日志发送到其他机器的日志解决方案结合使用,但这会更加复杂。

实际防止此类故障的解决方案并不那么明确:

  • 确定导致内存不足的进程后,您可以限制其资源使用,以便它不会再次消耗所有内存。执行此操作的细节可能取决于实际的进程/应用程序,值得在另一个问题上进行扩展(尽管您可能会找到很多通用指南)。

  • 打开交换(同样,有很多相关指南)是另一种选择,尽管我无法确定其有效性。

  • 另一种方法,也是最后的手段,是https://stromberg.dnsalias.org/~strombrg/fallback-reboot/,这个实用程序据称可以让您在找不到其他方式访问机器时远程重启机器。免责声明:我之前从未真正使用过它,并且我与该实用程序没有任何关系,只是听说过一些关于它的好话。使用时风险自负!

相关内容