这主要针对Debian / Ubuntu,但我对各种发行版都足够精明,能够使一个发行版的解决方案适应另一个发行版.
这是我的情景.在某些情况下,引导过程会将您转移到initrd的shell(通常是busybox).最值得注意的是,每当您运行硬件RAID时,必须为每个新的内核版本重建驱动程序.我希望能够像访问完全启动的系统一样访问救援系统.
我认为可以将shell(s)和sshd(OpenSSH或dropbear)的静态构建放入initrd中,并且一直在寻找可以根据我的需求调整的现有解决方案.
假设没有现有的解决方案(因为我已经搜索了很长一段时间)除了尽可能使用静态构建(或提供库)之外我还需要考虑什么?简单地缓存dropbear的静态构建并使用/ etc / initramfs-tools / hooks嵌入“转换”的OpenSSH sshd_config和原始主机密钥是否合理?
解决方法:
Ubuntu 16.04 contains a package called dropbear-initramfs
应该提供此功能.
Lightweight SSH2 server and client – initramfs integration dropbear
is a SSH 2 server and client designed to be small enough to be used
in small memory environments, while still being functional and secure
enough for general use.It implements most required features of the SSH 2 protocol, and other
features such as X11 and authentication agent forwarding.This package provides initramfs integration.
我需要调整的唯一项目除了安装所述包之外:
>取消注释/etc/initramfs-tools/conf-hooks.d/dropbear中注释掉的DROPBEAR = y
>转换我现有的主机密钥(见下文)
>创建并填充/etc/initramfs-tools/root/.ssh/authorized_keys.为此,我选择将/ mount / boot / bind绑定到/etc/initramfs-tools/root/.ssh
>最终更新-initramfs -u -k都重新创建了所有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的完整路径.