Я пытаюсь зашифровать tar-файл, используя пароль, хранящийся в файле: ~/Documents/Secret/.secret
с помощью следующей команды:
cat ~/Documents/Secret/.secret | gpg -c --passphrase-fd 0 ~/backup.tar
Теперь я ожидаю на выходе этот файл: ~/backup.tar.gpg
но он ничего не выводит.
Я получаю эту ошибку, кто-нибудь может мне помочь? Я действительно запутался:
gpg: problem with the agent: ioctl non appropriata per il device
gpg: error creating passphrase: Operazione annullata
gpg: symmetric encryption of '/home/pi/backup.tar' failed: Operazione annullata
Я пытаюсь зашифровать этот файл на моем Raspberry Pi 3 с помощью Raspian 9 (Stretch)
решение1
Правильная команда для шифрования одного файла с использованием парольной фразы, сохраненной в файле:
gpg -c --batch --yes --passphrase-file ~/Documents/Secret/.secret --output ~/backup.tar.gpg ~/backup.tar
Где:
-c
Зашифровать файл--batch
Это то, что я искал: позволило мне выполнить процесс шифрования в скрипте.--yes
Подтверждайте множество сообщений в случае запроса (например: «Хотите перезаписать?»)--passphrase-file myKey
Указывает, где хранится ключ--output
cryptedFile.gpg` Указывает имя выходного файла
решение2
Вероятно, вам действительно следует использовать эту --pinentry-mode loopback
опцию, она позволяет использовать парольные фразы в файлах и каналах (файловых дескрипторах).
Команды --batch
и --yes
лишают вас многих возможностей и создают риски, не последним из которых является перезапись существующих файлов. --output
тогда они также не понадобятся, новые файлы автоматически получат расширение .gpg
.
(На мой взгляд, оба варианта — это просто обходные пути для ошибок, вызванных программами принудительного ввода пароля).