![SSH 在无头服务器启动期间解密加密的 LVM?](https://linux22.com/image/42445/SSH%20%E5%9C%A8%E6%97%A0%E5%A4%B4%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%AF%E5%8A%A8%E6%9C%9F%E9%97%B4%E8%A7%A3%E5%AF%86%E5%8A%A0%E5%AF%86%E7%9A%84%20LVM%EF%BC%9F.png)
当我安装 Ubuntu 10.04 和现在的 10.10 时,我可以选择为我的硬盘驱动器启用“加密 LVM”。选择该选项后,系统会在引导期间提示我输入密码以解密 LVM。
现在,我正在考虑建立一个运行 Linux(不一定是 Ubuntu)的无头服务器,但我担心由于服务器是无头的,我将无法在启动过程中解密它。我能否在启动过程中通过 SSH 输入加密 LVM 的密码?如果是这样我该如何设置?或者还有其他解决方案吗?同样,这个问题不是 Ubuntu 特有的。谢谢。
答案1
对于较新版本的 Ubuntu,例如 14.04,我找到了以下组合@dragly和这些博文'答案非常有帮助。转述一下:
(在服务器上)安装 Dropbear
sudo apt-get install dropbear
(在服务器上)复制并分配根公钥/私钥登录的权限
sudo cp /etc/initramfs-tools/root/.ssh/id_rsa ~/. sudo chown user:user ~/id_rsa
记得要改变用户您在服务器上的用户名。
(在客户端)从服务器获取私钥
scp [email protected]:~/id_rsa ~/.ssh/id_rsa_dropbear
(在客户端)向 ssh 配置添加条目
Host parkia Hostname 192.168.11.111 User root UserKnownHostsFile ~/.ssh/know_hosts.initramfs IdentityFile ~/.ssh/id_rsa_dropbear
记得要改变帕克亚无论您想输入什么
ssh my-box
内容。(在服务器上)创建这个文件在
/etc/initramfs-tools/hooks/crypt_unlock.sh
(在服务器上)使该文件可执行
sudo chmod +x /etc/initramfs-tools/hooks/crypt_unlock.sh
更新 initramfs
sudo update-initramfs -u
启动时禁用 dropbear 服务,以便在分区解密后使用 openssh
sudo update-rc.d dropbear disable
你完成了。试试看。如果您需要这样做,请查看上面链接的博客文章,了解有关如何使用静态 IP 地址配置服务器的说明。
答案2
使用 BusyBox 和 Dropbear 进行此类设置的指南显示在这篇博文。 Early-ssh 对我不起作用,显然不再需要了。
我在下面总结了您需要做的事情。想了解更多详情,请看上面的帖子:
在您的计算机上安装 BusyBox 和 Dropbear服务器
sudo apt-get install dropbear busybox
更新您的 initramfs服务器
sudo update-initramfs -u
将 dropbear 生成的私钥复制到您的客户端计算机。您可能需要将其复制到新目录并更改所有权才能执行此操作。在你的服务器请执行下列操作:
sudo cp /etc/initramfs-tools/root/.ssh/id_rsa ~/. sudo chown user:user ~/id_rsa
请记住将 user 替换为您的用户名。密码登录似乎不起作用。
现在您可以通过在您的计算机上调用以下命令来使用 scp 传输私钥客户:
scp [email protected]:~/id_rsa ~/.ssh/id_rsa_dropbear
设置您的客户的
~/.ssh/config
文件以便于登录。使用文本编辑器打开它并添加以下内容:Host myremoteserver HostName my.remote.server User root UserKnownHostsFile ~/.ssh/known_hosts.initramfs IdentityFile ~/.ssh/id_rsa_dropbear
将 Host 更改为您喜欢的任何内容,并将 HostName 更改为您的服务器名称。让用户成为root。它似乎是 Dropbear 中唯一接受的用户。保存并关闭文件。
重新启动你的服务器并等待密码提示。给 Dropbear 几秒钟的时间来检测并设置其互联网连接。在您的计算机上使用以下命令连接到您的服务器客户:
ssh myremoteserver # or any name you chose
登录后,在您的计算机上发出以下命令服务器。详细信息请参阅博文:
pid=`ps | grep "/scripts/local-top/cryptroot" | cut -d " " -f 3` kill -9 $pid sleep 35 /scripts/local-top/cryptroot pid=`ps | grep "/bin/sh" | cut -d " " -f 3` kill -9 $pid;
输入密码需要一些时间(30 秒)。出现提示时输入。
通过键入关闭连接
exit
您的服务器现在应该已解锁其加密硬盘并正常启动。
(非常感谢该博文的原作者!)
答案3
我认为早期 ssh提供您正在搜索的内容:
Early-ssh is a simple initramfs hook, which installs Dropbear SSH server into
your initramfs, and starts it at boottime, so you will be able to do a lot of
things remotely over SSH, before your root partition gets mounted, for example:
* unlocking LUKS encrypted crypto devices -
even your root can be an encrypted filesystem
* assembling/altering RAID arrays (mdadm)
* checking the root filesystem in read-write mode,
taking action in case of errors
* and so on...
已经有一个 .deb 软件包可用,所以您可能对 Ubuntu 很满意。