我们需要从覆盖一组服务器上的 authorized_keys 文件进行恢复。远程嵌入式 Linux 设备已配置为自主通过 ssh 连接到 Ubuntu 14.04 服务器。我们没有这些设备的 ssh 公钥记录,也无法物理访问这些设备。我们需要允许它们再次通过 ssh 连接到服务器而无需密码。它们并不总是使用相同的 IP 地址进行连接。它们总是使用与美国 T-mobile 关联的 IP 地址进行连接。这些设备将继续尝试登录。我们只需允许它们进入即可。一旦它们连接,反向 ssh 就已配置,因此我们可以登录并获取 ssh 密钥。有办法解决这个问题吗?
答案1
如果您没有备份,您可能需要求助于数据恢复技术。您的成本将根据使用的文件系统、是否使用压缩或加密、使用什么工具覆盖文件、文件被覆盖的时间等而有所不同……
理想情况下,当您意识到需要从硬盘执行数据恢复时,您应该关闭机器并使用 dd 制作硬盘的块级映像。如果该分区仅用于您的主目录,而不是由需要写入它的软件使用,那么您只需将其重新安装为只读即可。
这取决于所使用的工具,但很可能当文件被覆盖时,新内容被写入硬盘上的新位置,而以前的位置被标记为释放但不会被立即覆盖。
这就像改变一本书的目录中的页码以指向新的页面,但书中的旧页面却没有任何参考。
等待的时间越长,新数据被写入旧位置的可能性就越大,旧位置现在被标记为可用空间,可用于存储任何新数据。一旦发生这种情况,任何软件工具都无法恢复数据。
我无法在这里介绍所有可能的数据恢复技术,但最基本的入门方法可能是使用这样的命令。将 /dev/sda1 替换为 authorized_keys 文件所在的任何设备/分区,或者更好的是,替换为该分区的映像。
sudo grep -z -i -a '^ssh-rsa AAAAB3NzaC1yc2E' /dev/sda1
您可能会得到较高的噪声与信号比,并且需要在输出中寻找任何有效的 ssh 密钥。同样,您的里程可能会有所不同。
答案2
嗯......如果你有私钥,我相信可以从中重新生成公钥。