从内存中处理命令行参数值/注入内容,而不是使用 cli 参数

从内存中处理命令行参数值/注入内容,而不是使用 cli 参数

有没有办法处理内存中的命令行参数?我的具体问题是,我有一个用 luks 加密的卷,带有一个分离的头文件。

设置如下:

  • 工作站
  • 服务器

我不想将头文件存储在服务器所以我继续工作站当我想解密 luks 卷时,我想从另一台机器发出一个简单的 ssh 命令,而不将头文件存储在服务器例如:

sh
ssh [email protected] "cryptsetup luksOpen /dev/mdx/ --header=... volume1"

有没有办法将头文件本地保存在工作站,并且只通过 ssh 连接传输文件的内容,这些内容由服务器侧并视为本地文件参数?

这里的问题是(据我所知),cryptsetup打开并读取指定为的文件--header。有没有一种 Linux/UNIX 方法来伪造这个,并将文件的内容“推送/注入”到命令中?

目前我正在使用一个 USB 记忆棒,其中存储了标题。

我希望我想要的很清楚,英语不是我的母语,也许在翻译中遗漏了一些东西。


编辑:每次重启后,文件存储/复制到 temp/ram-fs 怎么样?我刚发现有默认的 tempfs,/dev/shm使用它安全吗?

答案1

文件系统/dev/shm是为共享内存而设计的。如在这篇 Cyber​​citi 文章

/dev/shm 只不过是传统共享内存概念的实现。它是在程序之间传递数据的有效方法。一个程序将创建一个内存部分,其他进程(如果允许)可以访问该部分。这将加快 Linux 的速度。

就像/tmp现代 Linux 上的 tmpfs 文件系统一样,您存储在那里的任何东西都会保留在内存中,并在重新启动时被删除。但是,我不知道有什么原因不能用它/dev/shm来存储您想要访问的文件。我可以确认,在我工作的地方,我们经常/dev/shm在生产系统中使用它来存储一组文件,这些文件将被许多程序使用,并且在每次启动时都会创建。

因此,我想说,如果这是解决问题的有效方法,那么您可以继续在每次启动时将文件存储在那里。

答案2

您可能能够使用进程替换<(command)。它将被替换为一个临时文件名,该文件名代表包含命令输出的管道。

ssh [email protected] cryptsetup luksOpen /dev/mdx/ --header=<(cat) volume1 < /path/to/headerfile

相关内容