启动期间无法将密码发送到scp提示符

我有Ubuntuencryption分区的操作系统。 在启动过程中,我想使用scp从远程服务器下载密钥文件,并使用它来解密分区。

我做了什么:

/etc/initramfs-tools/hooks/myhook.sh

#PREREQS blah blah mkdir ${DESTDIR}/usr mkdir ${DESTDIR}/usr/bin cp -pnL /usr/local/bin/dropbearmulti ${DESTDIR}/bin/dropbearmulti #compiled dropbear ssh/scp client cp -pnL /etc/initramfs-tools/root/.ssh/* ${DESTDIR}/root/.ssh #copy keys/known_hosts to image 

/etc/initramfs-tools/scripts/local-top/myscript.sh

 ln -s /bin/dropbearmulti /usr/bin/dbclient #symlink for dbclient (need to make scp work) export HOME=/root /bin/dropbearmulti scp user@host:/home/user/file /tmp/file #HERE I NEED TO READ PASSWORD FOR SCP 

networkingconfiguration,一切都很好。 当它执行scp ,我看到提示需要input密码的地方,但我不能这样做(挂起)启动过程被卡住了。

我试图用plymouth

 /bin/plymouth ask-for-password --prompt "Specify password: " | /bin/dropbearmulti scp user@host:/home/user/file /tmp/file 

这是要求密码,我可以input它提交,但它没有传递给SCP(SCP再次要求密码卡住)

我怎样才能将密码从stdin传递给scp命令?

谢谢

我不知道你需要多less安全,但是一个select是通过HTTPS在密码保护的目录中提供密钥文件。 你可以在initramfs中包含curl并使用它来下载密钥文件。 我想这比SSH更容易接受各种来源的密码。