Come crittografare i dati in bitbucket senza perdere gli strumenti git diff?


4

Sulla base di questa domanda: crittografa i file prima di inviarli al cloud .

considerando openssl: ad esempio quando si utilizza openssl possiamo scrivere i file fooenc.sh:

#!/bin/sh 
openssl enc -bf -nopad -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T

e foodec.sh:

#!/bin/sh
openssl enc -bf -nopad -d -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T

Nel .git/configfile nel repository è necessario specificare questi filtri;

[filter "crypt"]
    clean = fooenc.sh
    smudge = foodec.sh

ho provato questo approccio e mi è venuto in mente:

error: cannot run fooenc.sh: No such file or directory
error: cannot fork to run external filter ourenc.sh
error: external filter fooenc.sh failed

Dove suppongo di mettere questo * .sh?

Anche se provo a mettere

 [filter "crypt"]
        clean = openssl enc -bf -nopad -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T
        smudge = openssl enc -bf -nopad -d -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T

anche pensato che mi fosse successo:

bad decrypt
3074115260:error:0607F08A:digital envelope routines:EVP_EncryptFinal_ex:data not multiple of block length:evp_enc.c:414:
error: external filter openssl enc -bf -nopad -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T failed 1
error: external filter openssl enc -bf -nopad -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T failed

Sono stati introdotti altri approcci come git-remote-encrypt o un altro usando GnuPG :

In .git/info/attributesuso:

myPrivateInfosFile filter=gpg diff=gpg

Nel tuo .git/configfile repository :

[filter "gpg"]
smudge = gpg -d -q --batch --no-tty
clean = gpg -ea -q --batch --no-tty -r C920A124
[diff "gpg"]
textconv = decrypt

Alla fine, usando l' approccio git-remote-encrypt mi è successo:

gcrypt: Remote ID is :id:k/a9sdsd332e3442wdaJ
Counting objects: 102, done.
Compressing objects: 100% (71/71), done.
Total 102 (delta 8), reused 0 (delta 0)
gcrypt: Encrypting to: --throw-keyids --default-recipient-self
gcrypt: Requesting manifest signature
gpg: no default secret key: secret key not available
gpg: [stdin]: sign+encrypt failed: secret key not available
error: failed to push some refs to 'gcrypt::rsync:https://example@bitbucket.org/ourstuffteam/our.git'

Niente di tutto ciò è stato un approccio riuscito.

** Secondo questo o altri nuovi approcci. Come posso crittografare i dati in git più correttamente in bitbucket? **


A chi importa dove metterlo? Usa solo percorsi assoluti. Inoltre, poiché questi comandi probabilmente utilizzano pipe, utilizzare execquando si inseriscono questi comandi in uno script esterno.
Daniel B,

si hai ragione. prima ho usato percorsi assoluti al di fuori del repository, ma ho bisogno di autorizzazioni. ~/ourenc.sh: 1: ~/ourenc.sh: /home/mypc/ourenc.sh: Permission deniedanche se scrivo direttamente la riga di comando mi viene in mente Bad Decrypt
ePascoal

Se dice "Autorizzazione negata" il file non era eseguibile (+ x). Non posso aiutarti con il resto, ma potresti provare senza -nopad.
Daniel B,

Modifica la domanda per rimuovere il rumore relativo all'essere un nuovo utente e chiarire dove il problema è diverso dalla domanda a cui ti colleghi. Se non è diverso allora semplicemente è un duplicato e verrà chiuso in quanto tale.
Arjan,

@DanielB Grazie per il tuo suggerimento. Non so perché, rimuovendolo -nopadfunziona crittograferà. Il problema unico ora è come mettere i file .sh fuori dal repository poiché ho bisogno delle autorizzazioni per eseguirli all'interno .git/config. @Arjan questa non è una domanda duplicata poiché fornisce 3 approcci allo stesso problema, per questo motivo ha modificato questa domanda come se avessi suggerito di prendere questo problema come una domanda basata su un'altra e non duplicata. per risolvere i problemi di crittografia su git.
ePascoal,

Risposte:


1

Ho usato il tuo tentativo per qualche tentativo e ho trovato una soluzione per il tuo git-remote-gcrypterrore. Vedi la mia domanda Configurare un repository git crittografato .

Devi semplicemente correre

gpg --gen-key

che avvia un dialogo per creare una gpgchiave che può essere successivamente utilizzata per inviare a bitbucket. Confronta l' gpg manual

How to manage your keys

       This section explains the main commands for key management

       --gen-key
              Generate a new key pair using the current  default  parameters.   This  is  the
              standard command to create a new key.

              There  is also a feature which allows you to create keys in batch mode. See the
              the manual section ``Unattended key generation'' on how to use this.

Tuttavia, non so ancora su un ulteriore utilizzo.

modificare

Ho appena provato a clonare quel repository su un'altra macchina. Ovviamente uno ha bisogno del gpg-key (e della chiave segreta, il cui nome implica che questa è una cattiva idea) per questo, quindi ho deciso di copiare semplicemente il mio sull'altra macchina. Purtroppo non funziona in questo modo, quindi probabilmente dovremo aggiungere altri utenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.