Я хочу создать сценарий генерации ключа GnuPG для одного человека, который, хотя они запускают ubuntu, не чувствует себя комфортно с помощью CLI. Кроме того, кто-то еще управляет своим компьютером, сохраняя его в актуальном состоянии и в хорошем рабочем состоянии, поэтому у них нет доступа root/sudo. И я действительно хотел бы попытаться избегать делать как можно больше инструкций по телефону ... было слишком много раз, чтобы узнать, что такое PITA!Необязательный скрипт командной строки GPG зависает в команде GPG
Итак, я взломал этот сценарий, сильно заимствуя из примера, который я нашел на форумах gnupg.org (я думаю?). Но он ничего не делает, как только команда gpg --gen-key --batch
запускается независимо от того, сколько активности мыши будет создано за 3 или 4 минуты. Все инструкции echo btw являются лишь временным средством для указания прогресса скрипта, который не очень далек.
#!/bin/bash
# First run give your server some work, otherwise gpg won't be able to generator random bytes.
#sudo rngd -r /dev/urandom
#no sudo so:
echo -e "\nYou need to begin moving your mouse continuously and in random patterns for as long as it takes to generate a new key. This could take a minute or two, so be patient and just keep moving the mouse.\n"
echo -e "\ngpg --gen-key --batch\n"
gpg --batch --gen-key
%echo Generating a default key
Key-Type: default
Key-Length: 2048
Subkey-Type: default
Name-Real: Firstname Lastname
Name-Comment: No comment
Name-Email: [email protected]
Expire-Date: 0
Passphrase: abcde
%pubring foo.pub
%secring foo.sec
# Do a commit here, so that we can later print "done" :-)
%commit
%echo done
# kill the rngd task.
#sudo service rng-tools stop
echo -e "\ngpg -k\n"
gpg -k
# get key id for newly created passkey
echo -e "\nkId=$(gpg -k Firstname|grep pub|sed -r 's/^pub[ ]*2048R\/([A-Z0-9]{8,})[ ]*.*$/\1/')\n" #; echo "\$kId: ${kId}"
kId=$(gpg -k Firstname|grep pub|sed -r 's/^pub[ ]*2048R\/([A-Z0-9]{8,})[ ]*.*$/\1/') ; echo -e "\n\$kId: ${kId}\n"
# set key as the default key (if desired) by entering this line in your ~/.bashrc
echo -e "\nexport GPGKEY=$kId\n"
export GPGKEY="$kId"
# restart the gpg-agent and source your .bashrc again
echo -e "\nkillall -q gpg-agent\n"
killall -q gpg-agent
eval $(gpg-agent --daemon)
source ~/.bashrc
#create revocation cert
echo -e "\ngpg --output revoke.asc --gen-revoke $GPGKEY\n"
gpg --output revoke.asc --gen-revoke $GPGKEY
# send public key to keyserver
echo -e "\ngpg --send-keys --keyserver keyserver.ubuntu.com $GPGKEY\n"
#gpg --send-keys --keyserver keyserver.ubuntu.com $GPGKEY
Интересно, может ли кто-либо увидеть какие-либо очевидные проблемы или упущения, подающие «gpg» необходимые ключевые данные?
Я получаю то же самое, даже если я запускаю скрипт с помощью команды sudo rngd -r /dev/random
, которую мне нужно обойти для предполагаемого пользователя (без доступа к sudo).
Итак, я думаю, что проблема заключается в ключевых параметрах, которые я хочу передать в gpg, но у меня есть крест, на которые они ссылаются на странице руководства, и, похоже, не может найти, что может быть проблемой. Это смешно, хотя gpg не возвращает ошибку.
Где находится GnuPG или ваш скрипт? Вам может потребоваться использовать '% no-ask-passphrase'. Если у вас недостаточно энтропии, просто продолжайте работать и дайте GnuPG запуститься в фоновом режиме. Большинство операционных систем получают энтропию из нескольких источников, просто перемещение мыши может оказаться недостаточным. Сделайте некоторые фактические работы, так что есть сетевой трафик, жесткий диск вращается, ..., и он скоро сможет собрать достаточно энтропии. В любом случае: какую операционную систему вы используете? –
@Jens: извините, скрипт зависает после повторения и запуска 'gpg -gen-key -batch'; Я запускаю Debian stable; Я также попробовал позволить 'du /' запускать перед запуском скрипта, который определенно должен генерировать более чем достаточно энтропии, но также открывать и закрывать такие приложения, как gimp, inkscape и vbox, которые всасывают много ресурсов. Я попробую добавить параметр '% no-ask-passphrase', как вы предлагаете, и посмотреть, будут ли дела развиваться дальше или нет. – nanker
@ Да, да, «% no-ask-passphrase» не оказало заметного влияния. Странно, однако, что '% echo Generating the default key' сразу же после команды gpg -batch -gen-key никогда не перекликается, возможно, указывая на проблему с помощью команды' gpg -batch -gen-key'; но на тех немногих сайтах, которые я обнаружил, мы имеем дело с автоматическим генератором ключей gpg, который, по-видимому, является тем, который использовался или предлагался. Но тогда почему gpg не возвращает ошибку, если она действительно не ждет ввода какого-либо пользователя, который затем победил бы без участия «пакетного» варианта – nanker