我不知道为什么,但我无法跟上这些说明在我的 Debian 稳定版上。安装 dropbear 和 busybox 后,我尝试运行initramfs -u
.我收到一个奇怪的警告:
# update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.9.0-4-amd64
dropbear: WARNING: Invalid authorized_keys file, remote unlocking of cryptroot via SSH won't work!
然后,我尝试查看该文件,但initramfs 文件夹中/etc/initramfs-tools/root/.ssh/id_rsa
没有文件夹。root
我也尝试过跑步
dropbearkey -t dss -f /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
但没有文件夹/etc/initramfs-tools/etc/
,所以这个命令也失败。当然,我可以创建这些文件夹,但恐怕这种奇怪的行为并不是来自更深层次的错误。如果有帮助,这里是 initramfs 文件夹的内容:
me@server:/etc/initramfs-tools# ls
conf.d hooks initramfs.conf modules scripts update-initramfs.conf
谢谢你!
答案1
感谢#debian 上的一些帮助,我终于找到了解决方案。在最近的 Debian 上,该过程似乎有很大不同。这是新的:
首先确保dropbear
和dropbear-initramfs
已安装
sudo apt install busybox dropbear*
~/.ssh/id_rsa.pub
然后在文件中添加您的公钥(大多数情况下)(编辑:显然在最近的 dropbear 上,根据下面 Peter Schilling 的回答,/etc/dropbear-initramfs/authorized_keys
该文件现在位于其中)。/etc/dropbear/initramfs/authorized_keys
然后更新initramfs
以考虑更改: : update-initramfs -u
就这样!
请注意,如果您想避免dropbear
和之间的密钥发生冲突openssh
(它们共享相同的 ip,但使用不同的密钥),您可能需要在客户端中添加~/.ssh/config
类似的内容:
Host myserver_luks_unlock
User root
Hostname <myserver>
# The next line is useful to avoid ssh conflict with IP
HostKeyAlias <myserver>_luks_unlock
Port 22
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
然后,您只需使用以下命令进行连接:
ssh myserver_luks_unlock
一旦出现提示,请按照 busybox 文本的建议键入:
cryptroot-unlock
享受!
答案2
只是一些进一步的细节。
首先,如果您的 ssh 客户端还没有私钥/公钥对,您需要使用 生成它ssh-keygen
,如图所示这里。
其次,我会指出您需要:
添加您的客户的文件 /etc/dropbear-initramfs/authorized_keys 中的公钥(大多数时候 ~/.ssh/id_rsa.pub)在服务器上
就是这样。在客户端:
c_user@client:~$ scp .ssh/id_rsa.pub s_user@server:id_rsa.pub
在服务器上:
s_user@server:~$ sudo sh -c "cat id_rsa.pub >> /etc/dropbear-initramfs/authorized_keys"
s_user@server:~$ rm id_rsa.pub
最后,连接到服务器非常重要根(即使 root 帐户被禁用)。
答案3
对于像我这样的人来说,几年后发现这个问题很有用,更新: 托比亚斯博拉的回答增强了solitone 的回答仍然有效,除了在较新版本的 Dropbear 中,密钥文件应位于
/etc/dropbear/initramfs/authorized_keys
代替
/etc/dropbear-initramfs/authorized_keys