加密 dropbear ssh-access 的私钥

加密 dropbear ssh-access 的私钥

我想用dropbear作为替代方案,最小的 ssh-server 和 -client。 dropbear允许使用私钥-公钥进行 ssh 访问,尽管这些密钥与所使用的密钥不同openssh,必须使用dropbearconvert- 命令进行转换(这很容易做到)。

我遇到的问题是dropbear本身不支持加密的私钥。但原则上我希望避免将未加密的 ssh 密钥留在我的笔记本电脑上。

因此我的问题是:是否有人对如何规避该问题有任何好的想法,并有一个方法(脚本?):

  • 解密我用于 dropbear 的密钥(例如使用gnupg)并将它们加载到内存中,
  • 将它们传递给dbclient-binary(dropbear-client-application),并且
  • 启动 ssh 连接

另外,我想知道 dropbear 是否存在ssh-config 选项(尤其是 的选项Host)的替代方案(因此是否可以为 dropbear 创建一个特定于主机的配置文件,我可以在其中指定例如 IP-地址、端口和其他详细信息)。

答案1

看起来dbclient完全愿意从命名管道或 FIFO 读取私钥。

所以通过bash的进程替换,你可以这样写:

dbclient -i <(cat .ssh/id_dropbear) user@server

因此,如果你有一个加密的 GPG .ssh/id_dropbear.gpg,你可以将其写为:

dbclient -i <(gpg --decrypt .ssh/id_dropbear.gpg) user@server

输入解密密码后,dbclient使用您的 GPG 加密私钥登录。所以这部分工作正常。

这里的主要问题是,如果您.ssh/id_dropbear之前已经以未加密的方式存储,则可以通过取证来恢复它。要动态加密来自 的密钥dropbearconvert,您可以应用相同的原理:

$ dropbearconvert openssh dropbear \
    .ssh/id_openssh >(gpg --symmetric --output .ssh/id_dropbear.gpg)
Key is a ssh-rsa key
Wrote key to '/dev/fd/63'

但它在实践中似乎并没有太大用处,因为dropbearconvert它只为 OpenSSH 的加密私钥提供非常有限的支持。对于这个例子,我必须专门创建一个 OpenSSH 密钥来dropbearconvert理解......

不幸的是,这个技巧似乎对dropbearkey命令根本不起作用,由于某种原因,命令坚持写入临时文件并重命名它,完全绕过管道。

因此,看来您别无选择,只能首先生成私钥tmpfs(例如在Live CD 中/dev/shm或从 Live CD 中生成),然后从那里对其进行加密。

相关内容