SSH 在无头服务器启动期间解密加密的 LVM?

SSH 在无头服务器启动期间解密加密的 LVM?

当我安装 Ubuntu 10.04 和现在的 10.10 时,我可以选择为我的硬盘驱动器启用“加密 LVM”。选择该选项后,系统会在引导期间提示我输入密码以解密 LVM。

现在,我正在考虑建立一个运行 Linux(不一定是 Ubuntu)的无头服务器,但我担心由于服务器是无头的,我将无法在启动过程中解密它。我能否在启动过程中通过 SSH 输入加密 LVM 的密码?如果是这样我该如何设置?或者还有其他解决方案吗?同样,这个问题不是 Ubuntu 特有的。谢谢。

答案1

对于较新版本的 Ubuntu,例如 14.04,我找到了以下组合@dragly这些博文'答案非常有帮助。转述一下:

  1. (在服务器上)安装 Dropbear

    sudo apt-get install dropbear
    
  2. (在服务器上)复制并分配根公钥/私钥登录的权限

    sudo cp /etc/initramfs-tools/root/.ssh/id_rsa ~/.
    sudo chown user:user ~/id_rsa
    

    记得要改变用户您在服务器上的用户名。

  3. (在客户端)从服务器获取私钥

    scp [email protected]:~/id_rsa ~/.ssh/id_rsa_dropbear
    
  4. (在客户端)向 ssh 配置添加条目

    Host parkia
        Hostname 192.168.11.111
        User root
        UserKnownHostsFile ~/.ssh/know_hosts.initramfs
        IdentityFile ~/.ssh/id_rsa_dropbear
    

    记得要改变帕克亚无论您想输入什么ssh my-box内容。

  5. (在服务器上)创建这个文件/etc/initramfs-tools/hooks/crypt_unlock.sh

  6. (在服务器上)使该文件可执行

    sudo chmod +x /etc/initramfs-tools/hooks/crypt_unlock.sh
    
  7. 更新 initramfs

    sudo update-initramfs -u
    
  8. 启动时禁用 dropbear 服务,以便在分区解密后使用 openssh

    sudo update-rc.d dropbear disable
    

你完成了。试试看。如果您需要这样做,请查看上面链接的博客文章,了解有关如何使用静态 IP 地址配置服务器的说明。

答案2

使用 BusyBox 和 Dropbear 进行此类设置的指南显示在这篇博文。 Early-ssh 对我不起作用,显然不再需要了。

我在下面总结了您需要做的事情。想了解更多详情,请看上面的帖子:

  1. 在您的计算机上安装 BusyBox 和 Dropbear服务器

    sudo apt-get install dropbear busybox
    
  2. 更新您的 initramfs服务器

    sudo update-initramfs -u
    
  3. 将 dropbear 生成的私钥复制到您的客户端计算机。您可能需要将其复制到新目录并更改所有权才能执行此操作。在你的服务器请执行下列操作:

    sudo cp /etc/initramfs-tools/root/.ssh/id_rsa ~/.
    sudo chown user:user ~/id_rsa
    

    请记住将 user 替换为您的用户名。密码登录似乎不起作用。

  4. 现在您可以通过在您的计算机上调用以下命令来使用 scp 传输私钥客户:

    scp [email protected]:~/id_rsa ~/.ssh/id_rsa_dropbear
    
  5. 设置您的客户~/.ssh/config文件以便于登录。使用文本编辑器打开它并添加以下内容:

    Host myremoteserver
        HostName my.remote.server
        User root
        UserKnownHostsFile ~/.ssh/known_hosts.initramfs
        IdentityFile ~/.ssh/id_rsa_dropbear
    

    将 Host 更改为您喜欢的任何内容,并将 HostName 更改为您的服务器名称。让用户成为root。它似乎是 Dropbear 中唯一接受的用户。保存并关闭文件。

  6. 重新启动你的服务器并等待密码提示。给 Dropbear 几秒钟的时间来检测并设置其互联网连接。在您的计算机上使用以下命令连接到您的服务器客户:

    ssh myremoteserver # or any name you chose
  1. 登录后,在您的计算机上发出以下命令服务器。详细信息请参阅博文:

    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 秒)。出现提示时输入。

  2. 通过键入关闭连接

    exit
    
  3. 您的服务器现在应该已解锁其加密硬盘并正常启动。

(非常感谢该博文的原作者!)

答案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 很满意。

答案4

如果你希望能够启动无人看管的除了远程之外,您还应该查看曼多斯(我和其他人写过):

Mandos 是一个允许具有加密根文件系统的服务器在无人值守和/或远程情况下重新启动的系统。看介绍手册页文件以获取更多信息,包括常见问题解答列表。

简而言之,启动服务器以安全的方式通过网络获取密码。有关详细信息,请参阅自述文件。

相关内容