我试图在 VMware 上的虚拟 Debian 服务器上安装 ncurses,但不知何故失败了。退出控制台后,我意识到我无法再登录。我无法使用 scp、WinSCP 或 SSH 客户端等工具进入服务器。当我尝试登录 getty 控制台时,我收到以下消息,并再次发现自己处于登录提示符下。简而言之,我被锁定在 [虚拟] 服务器之外。这是一台生产服务器,因此重新启动它是最后的手段。
我下载了几个 Live CD - Damn small Linux 和 Slitaz - 遗憾的是它们无法检测到虚拟机的硬盘。更改虚拟机的硬盘控制器是否会导致数据丢失?
login as: saichovsky
[email protected]'s password:
Linux myhost 2.6.32-5-amd64 #1 SMP Wed Jan 11 14:00:43 UTC 2012 x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Nov 2 17:39:03 2012 from 192.168.3.166
-bash: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
答案1
方法 1:ssh 到 sh shell
如果您有主机的 ssh 访问权限,请尝试以下操作
ssh username@hostname "/bin/sh -i"
这将允许您登录什如果成功,而不是 bash。
方法 2:使用另一个 VM 安装 VM 磁盘
我发布了步骤https://superuser.com/questions/501861/locked-out-of-opensuse-after-editing-etc-pam-d-xdm/501927#501927。但他可以用另一种方式解决。如果你想走这条路,我就把步骤粘贴在这里
VM1:问题虚拟机
VM2:另一个具有 root 访问权限的工作 VM。
- 关闭两个虚拟机。
- 复制VM1虚拟磁盘文件。
- 将 VM1 虚拟磁盘添加到 VM2 磁盘控制器中作为第二个磁盘。
- 启动 VM2。
- 获得 root 访问权限。
- 挂载 VM1 磁盘。
假设 VM1 根分区是 /dev/sdb1
mkdir /mnt/sdb1 挂载 /dev/sdb1 /mnt/sdb1
- 相应地修改文件。
- 关闭 VM2。
- 从 VM2 中移除 VM1 磁盘。
- 启动VM1并测试。
答案2
使用 Debian Live CD 来拯救系统。许多专用 Live CD(例如您提到的那些)的内核都只有一组非常有限的驱动程序。由于它是 Debian 系统,因此 Debian 安装介质应该具有必要的驱动程序。