Я запускаю следующую команду в crontab, чтобы зашифровать файл, и мне не нужно взаимодействие с клавиатурой
echo "PASSPHRASE" | gpg --passphrase-fd 0 -r USER --encrypt FILENAME.TXT
но у меня есть такой ответ:
gpg: C042XXXX: There is no assurance this key belongs to the named user
pub 40XXX/C042XXXX 2012-01-11 Name LastName. (comment) <user@email.com>
Primary key fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
Subkey fingerprint: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
It is NOT certain that the key belongs to the person named
in the user ID. If you *really* know what you are doing,
you may answer the next question with yes.
Use this key anyway? (y/N)
echo -e "PASSPHRASE" "\nyes" | gpg --passphrase-fd 0 -r USER --encrypt FILENAME.TXT
?--batch
и--yes
.Ответы:
Как намекнул Дэвид, проблема здесь в том, что gpg не доверяет открытому ключу, который вы используете для шифрования. Вы можете подписать ключ, как он объяснил.
Альтернативой - особенно если ключ может время от времени меняться - было бы привязать
--trust-model always
к вашей команде gpg.Вот соответствующий фрагмент на странице руководства:
источник
Вот мое решение, основанное на gpg2 (но я уверен, что вы можете применить аналогичную технику к gpg)
$ gpg2 --edit-key {recipient email address} > trust > 5 (select 5 if you ultimately trust the key) > save
Это скажет gpg2 полностью доверять ключу, чтобы вы могли зашифровать без запроса
источник
gpg2 --edit-key <key-id>
того, как вы сделаетеlsign
иsave
. Я думаю, что доверие 5 - неправильное использование для этого (неправильно понятое), и (для меня) оно было даже неэффективным (бесполезным), потому что x539 сказал.gpg
, а не только дляgpg2
:)Хакерский подход:
echo -n PASSPHRASE > phrase chmod 400 phrase #Make sure ONLY the user running the cron job can read the phrase yes | gpg --passphrase-fd 3 --recipient USER --encrypt FILENAME.txt 3<phrase
Основная проблема заключается в том, что ключ для USER не подписан. Если вы ему доверяете, вы можете подписать его
Вероятно, он задаст пару вопросов, в зависимости от вашей конфигурации. Сделайте это один раз, и тогда вы сможете войти в свой crontab. Я бы по-прежнему рекомендовал использовать предложенное мной решение, поместив кодовую фразу в отдельный файл и сделав ее доступной для чтения только одному пользователю, от имени которого запускается команда. Если вы это сделаете, вы можете убить
yes |
, и просто зашифровать строку.источник
lsign
было бы получше. Разве это не так, если вы lsign т.е. локально подпишите ключ, этот знак останется на вашем компьютере. Но если вы просто подписываете, это считается общедоступным и, следовательно, будет отправлено на серверы ключей, когда вы сделаете--send-keys
?Используйте эту команду, она вам поможет
echo "PASSPHRASE" | gpg --passphrase-fd 0 --always-trust -r USER --encrypt FILENAME.TX
источник
Я тоже столкнулся с этим. Я не мог получить ключ, чтобы сделать что-нибудь интересное. Вот что я сделал:
создать ключ gpg:
получить длинный идентификатор ключа (результат в 5-м столбце):
Добавьте строку доверенного ключа в ~ / gnupg / gpg.conf
Строка gpg в сценарии резервного копирования:
Отладка cron: я также записываю выходные данные дублирования cron, отправляя stdout и stderr в файл журнала в командной строке cron. Полезно знать
источник
trusted-key
строки вgpg.conf
приведетgpg
к тому, что вы всегда будете доверять этому ключу так же полно, как одному из собственных ключей пользователя , что плохо . Передача--trusted-key
в качестве аргумента и только в этом конкретном случае приемлема (как и передача--trust-model=always
таким же образом ).--edit-key
, а не добавляяtrusted-key
строку). Спрашивающий не сказал, что жалуется на собственный ключgpg
.Я предполагаю, что, как и я, многие люди приходят сюда для того, чтобы ответить на вопрос «без взаимодействия с клавиатурой». С gpg2 и gpg-agent стало довольно сложно подписывать / шифровать / расшифровывать данные без какого-либо взаимодействия с клавиатурой. Вот как можно создать подпись, если кодовая фраза закрытого ключа в виде открытого текста сохраняется в текстовом файле:
cat something_so_sign.xzy | gpg \ --passphrase-file "plaintext_passphrase.txt" \ --batch \ --pinentry-mode loopback \ -bsa
Измените -b -s -a в зависимости от ваших потребностей. Остальные переключатели обязательны. Вы также можете просто использовать
--passphrase 'SECRET'
. Как уже указывалось, будьте осторожны с этим. Текстовые файлы с открытым текстом, конечно, не намного лучше.источник
Или подпишите ключ (разумеется, после того, как вы вернете отпечаток пальца):
После этого вы полностью доверяете ключу.
1 = I don't know or won't say 2 = I do NOT trust 3 = I trust marginally 4 = I trust fully 5 = I trust ultimately
источник
--lsign-key
Может быть, лучше, не так ли? см. мой другой комментарий о lsignКогда вы создаете сертификат в первый раз со своим идентификатором электронной почты, выберите полностью доверенный сертификат, тогда всякий раз, когда вы шифруете какой-либо файл, не будет задавать вопрос вроде .... для получения дополнительной информации откройте изображение по ссылке выше.
источник
Другой подход: чтобы запретить доступ к конфиденциальным данным (вместо того, чтобы шифровать их с помощью сторонних ключей), я загружаю ТОЛЬКО * свой ** ПУБЛИЧНЫЙ ключ на сервер, на котором я хочу защитить данные, и использую этот ключ для шифрования. Это устраняет необходимость в интерактивном запросе для ввода пароля, что упрощает автоматизацию, и, что самое важное , ЧАСТНЫЙ ключ находится отдельно от общедоступного сервера.
gpg --batch --yes --trust-model always -r $YOURPUBKEYEMAILADDRESS -e ./file.txt
Однако, если НЕ выполняется шифрование с использованием собственного открытого ключа, использование переключателя
--trust-model always
будет немного рискованным. Во всяком случае, другой способ решения проблемы отказа в доступе к данным. HTH - Терренс Хоулаханисточник