为什么我在远程运行 Cryptmount 命令时会出现奇怪的输入重定向错误?

为什么我在远程运行 Cryptmount 命令时会出现奇怪的输入重定向错误?

我在用着地穴山挂载文件托管的加密映像(作为虚拟映像)

到目前为止,我已经成功创建了映像、挂载和卸载它、以及针对挂载写入和读取文件。

但是我想从远程安装它。所以我尝试了这个脚本:

#!/usr/bin/bash
echo "'$1'"
3<<<$1 cryptmount -m backup --passwd-fd 3

然后我可以用它调用mount-bkp.sh <password>

问题是这是在备份服务器上,我想从我的笔记本电脑调用这个脚本,这样我就可以本地存储密码并在我需要它之前挂载加密文件系统。

不幸的是,这不起作用:

$ ssh -C [email protected] "/home/user/bkp/mount-bkp.sh passwd"
'passwd'
e2fsck 1.45.5 (07-Jan-2020)
e2fsck: need terminal for interactive repairs

文件系统根本不需要修复,我的印象是密码已传递给其他程序,当我从远程发送命令时,该程序由于某种原因失败。

--passwd-fd选项是 cryptmount 用来从不同于交互式标准输入的输入中获取密码的选项。使用 0 不起作用,并会产生相同的消息(即使从服务器运行时也是如此),这就是为什么我怀疑重定向可能存在一些问题。

此外,我不确定 Cryptmount 项目是否仍然存在,我在 Ubuntu 中发现了它,我喜欢它支持常规用户操作,而不需要 sudo。

Cryptmount 文件系统配置如下:

backup {
  dev=/home/user/bkp/backup.img
  dir=/home/user/mnt/bkp
  fstype=ext4
  keyfile=/home/user/bkp/backup.key
  keyformat=builtin
  cipher=twofish
}

编辑: 这Giacomo 的回答如下解决了我的问题。nofsck还允许使用--passwd-fd 0并通过 stdin 发送密码,我推荐这样做,因为我的初始版本的脚本不太安全(ps -efa 公开了作为命令行参数发送的密码)。我的脚本的新版本是:

#!/usr/bin/bash
cryptmount -m backup --passwd-fd 0

可以使用以下方式调用:cat /path/to/password | ssh user@server /home/user/bkp/mount-bkp.sh

更好的是,可以通过使用一些密钥库替换“cat”部分来提高安全性,例如macos 的钥匙串

答案1

nofflags=nofsckck在配置中禁用文件系统检查backup {}

我对 Cryptmount 不太熟悉,但在网上搜索了一下“Cryptmount e2fsck”表明这似乎是一个已知问题。

您是否尝试过使用 运行相同的命令nofsck?它将被添加到backup {}配置中,如下所示:

flags=nofsck

另一个想法:使用 启动 SSH 连接-t

对于什么可能需要这样做,我们可以进行有根据的猜测:如果你知道它fsck会检查文件系统,那么这个错误信息就很有意义了:

e2fsck 1.45.5 (07-Jan-2020)
e2fsck: need terminal for interactive repairs

似乎它需要登录终端所具有的、未登录远程连接所提供的功能。我知道我还有另一个想法,您可以查看。只需-t在命令中设置 SSH 标志,如下所示:

ssh -t -C [email protected] "/home/user/bkp/mount-bkp.sh passwd

-t标志将 SSH 连接作为交互式终端 TTY 连接启动正如这里解释的那样

-t:强制分配伪终端。这可用于在远程机器上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。多个-t选项强制分配 tty,即使远程控制没有本地 tty。

相关内容