Wykonuję następne polecenie w tabeli crontab, aby zaszyfrować plik i nie chcę interakcji z klawiaturą
echo "PASSPHRASE" | gpg --passphrase-fd 0 -r USER --encrypt FILENAME.TXT
ale mam taką odpowiedź:
gpg: C042XXXX: There is no assurance this key belongs to the named user
pub 40XXX/C042XXXX 2012-01-11 Name LastName. (comment) <[email protected]>
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
i--yes
.Odpowiedzi:
Jak dał do zrozumienia David, problem polega na tym, że gpg nie ufa kluczowi publicznemu, którego używasz do szyfrowania. Możesz podpisać klucz, jak wyjaśnił.
Alternatywą - zwłaszcza jeśli klucz może się od czasu do czasu zmieniać - byłoby przypięcie
--trust-model always
do polecenia gpg.Oto odpowiedni fragment ze strony podręcznika:
źródło
Oto moje rozwiązanie oparte na gpg2 (ale założę się, że możesz zastosować podobną technikę do gpg)
$ gpg2 --edit-key {recipient email address} > trust > 5 (select 5 if you ultimately trust the key) > save
To powie gpg2, aby w pełni zaufać kluczowi, abyś mógł szyfrować bez pytania
źródło
gpg2 --edit-key <key-id>
wykonaniulsign
isave
. Myślę, że zaufanie 5 jest niewłaściwe do tego (niezrozumiane) i (dla mnie) było nawet nieskuteczne (bezużyteczne), ponieważ powiedział x539.gpg
, nie tylkogpg2
:)Podejście hakerskie:
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
Podstawowy problem polega na tym, że klucz, który masz dla USER, nie jest podpisany. Jeśli jej ufasz, możesz to podpisać
Prawdopodobnie zada kilka pytań, w zależności od twojej konfiguracji. Zrób to raz, wtedy powinieneś być dobry w swoim crontabie. Nadal zalecałbym skorzystanie z rozwiązania, które zaproponowałem, umieszczając hasło w osobnym pliku i umożliwiając odczytanie go tylko przez jednego użytkownika, którego polecenie działa jako. Jeśli to zrobisz, możesz zabić
yes |
i po prostu mieć linię szyfrowania.źródło
lsign
byłby to lepszy pomysł. Czy nie jest tak, że jeśli podpiszesz np. podpisz klucz lokalnie, ten znak pozostanie na twoim komputerze. Ale jeśli po prostu podpiszesz, zostanie to uznane za publiczne, a zatem zostanie wysłane do serwerów kluczy, gdy wykonasz polecenie--send-keys
?Użyj tego polecenia, to ci pomoże
echo "PASSPHRASE" | gpg --passphrase-fd 0 --always-trust -r USER --encrypt FILENAME.TX
źródło
Ja też w to wpadałem. Nie mogłem zdobyć klucza do podpisu, żeby zrobić coś interesującego. Oto co zrobiłem:
utwórz klucz gpg:
pobierz długi identyfikator klucza (wynik znajduje się w piątej kolumnie):
Dodaj linię zaufanego klucza do ~ / gnupg / gpg.conf
gpg w skrypcie kopii zapasowej:
Debugowanie crona: przechwytuję również dane wyjściowe dubugowania cron, wysyłając stdout i stderr do pliku dziennika w wierszu poleceń cron. Warto wiedzieć
źródło
trusted-key
linięgpg.conf
spowodujegpg
aby zawsze zaufać ten klucz jako całości jako jeden z klawiszy własnych użytkownika , co jest złe . Przekazywanie--trusted-key
jako argument i tylko w tym konkretnym przypadku jest dopuszczalne (podobnie jak przekazywanie--trust-model=always
w ten sam sposób ).--edit-key
nie przez dodanietrusted-key
linii). Pytający nie powiedział, że narzekał ich własny kluczgpg
.Zakładam, że podobnie jak ja, wiele osób przychodzi tutaj po część pytania „bez interakcji z klawiaturą”. W przypadku gpg2 i gpg-agent podpisywanie / szyfrowanie / odszyfrowywanie rzeczy bez interakcji z klawiaturą było dość skomplikowane. Oto, jak utworzyć podpis, gdy hasło klucza prywatnego w postaci zwykłego tekstu jest zapisywane w pliku tekstowym:
cat something_so_sign.xzy | gpg \ --passphrase-file "plaintext_passphrase.txt" \ --batch \ --pinentry-mode loopback \ -bsa
Zmień -b -s -a w zależności od potrzeb. Pozostałe przełączniki są obowiązkowe. Możesz także po prostu użyć
--passphrase 'SECRET'
. Jak już wspomniano, bądź z tym ostrożny. Oczywiście pliki tekstowe w postaci zwykłego tekstu nie są dużo lepsze.źródło
Lub podpisz klucz (oczywiście po zweryfikowaniu odcisku palca):
Następnie w pełni ufasz kluczowi.
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
źródło
--lsign-key
Może też lepszy pomysł, prawda? zobacz mój drugi komentarz o lsignKiedy tworzysz certyfikat po raz pierwszy ze swoim identyfikatorem e-mail, wybierz w pełni zaufany certyfikat, a następnie za każdym razem, gdy zaszyfrujesz jakikolwiek plik, nie zadajesz pytania typu .... po więcej informacji otwórz obrazek w powyższym linku.
źródło
Inne podejście: aby odmówić dostępu do poufnych danych (zamiast zaszyfrować je za pomocą kluczy innych firm), przesyłam TYLKO * mój ** klucz PUBLICZNY na serwer, na którym chcę chronić dane, i używam tego klucza do szyfrowania. Eliminuje to potrzebę interaktywnego monitu o podanie hasła ułatwiającego automatyzację, a co najważniejsze, klucz PRYWATNY znajduje się poza serwerem publicznym.
gpg --batch --yes --trust-model always -r $YOURPUBKEYEMAILADDRESS -e ./file.txt
Jednak jeśli NIE szyfrujesz własnym kluczem publicznym, użycie przełącznika
--trust-model always
jest nieco ryzykowne. Zresztą inny sposób rozwiązania problemu odmowy dostępu do danych. HTH - Terrence Houlahanźródło