有没有在 initrd 中运行 sshd 的固定解决方案?

有没有在 initrd 中运行 sshd 的固定解决方案?

这主要针对 Debian/Ubuntu,但我觉得自己对各种发行版足够了解,能够将一个发行版的解决方案适应另一个发行版。

这是我的场景。在某些情况下,引导过程会将您带到 initrd 的 shell(通常是 busybox)。最值得注意的是,每当您运行硬件 RAID 时,都必须为每个新的内核版本重新构建驱动程序。我希望能够像访问完全启动的系统一样访问救援系统。

我认为可以将 shell 和sshd(OpenSSH 或 dropbear)的静态构建放入 initrd 中,并且一直在寻找可以根据需要进行调整的现有解决方案。

假设没有现有的解决方案(因为我已经搜索了很长一段时间),除了尽可能使用静态构建(或提供库)之外,我还需要考虑什么?简单地缓存 dropbear 的静态构建并将/etc/initramfs-tools/hooks其与“转换后的”OpenSSHsshd_config和原始主机密钥一起嵌入是否合理?

答案1

Ubuntu 16.04 包含一个名为dropbear-initramfs应该提供此功能。

轻量级 SSH2 服务器和客户端 - initramfs 集成 dropbear 是一款 SSH 2 服务器和客户端,其设计足够小,可以在小内存环境中使用,同时仍然具有足够的功能和安全性,适合一般用途。

它实现了 SSH 2 协议的大多数必需功能,以及 X11 和身份验证代理转发等其他功能。

该软件包提供 initramfs 集成。

除了安装所述软件包之外,我唯一需要调整的项目是:

  1. DROPBEAR=y取消里面注释掉的内容/etc/initramfs-tools/conf-hooks.d/dropbear
  2. 转换我现有的主机密钥(见下文)
  3. 创建并填充/etc/initramfs-tools/root/.ssh/authorized_keys.为此,我选择绑定安装/root/.ssh/etc/initramfs-tools/root/.ssh
  4. 最后update-initramfs -u -k all重新创建了所有 initrd 映像

为了转换密钥,我运行了以下命令:

/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_rsa_key /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_ecdsa_key /etc/initramfs-tools/etc/dropbear/dropbear_ecdsa_host_key

笔记:源文件名和目标文件名不同。所以不要在这里做出假设。另外,/usr/lib/dropbear不在我的中PATH,所以我需要提供执行的完整路径dropbearconvert

相关内容