Linux – 由于/ dev / urandom不存在,SSH连接被拒绝

今天我们的一台生产机器(亚马逊EC2)closures了,我无法启动实例,因为我无法进入SSH,连接被拒绝,我不知道该怎么做,过了一段时间,我可以带 – 实例 – (确定短而甜)。

我以某种方式找出了/dev/urandom文件丢失的问题的根本原因,因此, SSH无法启动。 我必须在重新启动时创build这个文件,并且通过在现有的启动(init)脚本之一中添加几行代码来创build它,并且可以使服务器启动并运行,这意味着我可以通过SSH进入该框。

我需要以下的专家build议,请不要犹豫,给我更多的信息:

  1. 我应该离开那些我写在init脚本文件中的代码行吗?
  2. 什么可能是缺less/dev/urandom文件的原因?
  3. 我该怎么做才能避免这种情况呢?

谢谢。

更新:

对于那些想知道我写的东西的人:

 #!/bin/bash cd /dev ; /sbin/MAKEDEV urandom ; /etc/init.d/ssh start 

我build议留下代码。 我知道这甚至可以说是愚蠢的,但是你的/dev/urandom消失的事实绝对是奇怪的,而且可能会再次发生。 如果将来需要重新创build设备文件,请修改您的代码以发出不能忽略的日志消息。

你的/dev/urandom没有很好的理由被删除。 绝望的最好的东西可能是一个工具,比如puppet或者chef被configuration为从tarball写一个文件目录,并且首先完全清除目录作为扩展tarball的一部分。 (我会认为这样的使用是一个严重的工具configuration错误。)但是,以root身份运行的任何进程都将具有删除文件的权限,因此几乎可以做任何事情。

您可以将auditdconfiguration为在/dev/目录中查看文件的创build,删除和重命名。 将规则放入/etc/audit/audit.rules以configuration持久性手表:

 -w /dev/ -p wa 

有关configuration审计观察列表的完整详细信息,请参阅auditctl(8) ; 它是非常可configuration的,你可能需要调整configuration到你的系统,所以“标准”事件不会混乱你的审计日志。

另一种select是使用chattr(1)程序在文件上设置immutable属性。 有可能无论程序或工具可能已经删除文件可能不会去删除文件之前删除immutable属性的努力。

升级操作系统时由于某些原因导致升级中断,所以通常会发现类似的问题。 在AWS(EC2)中,您不应该升级它们提供的内核。 你最近是否尝试升级你的操作系统? 它更好地find丢失/ dev / urandom的实际原因并修复它。 然后在init脚本中保留代码。 让我们知道怎么回事。