Oggi vi spiegherò come eliminare dati sensibili come password da un repository Github in modo veloce e facile.
Potreste chiedermi:
Per quale motivo hai messo delle password in bella vista su Github?
Effettivamente è una bella domanda.
Il problema
In questi giorni sto sperimentando con qualche script in Python e al momento sto lavorando su uno script che controlla il prezzo su Amazon di un articolo e mi manda un’email se il prezzo scende sotto ad un certo costo.
Per spedire le email sto usando Gmail e come ben saprete, per usare il servizio di Google è necessario inserire username e password.
Il repository che ho creato è privato, quindi solo io posso accederci e vedere il codice, ma nell’ottica di renderlo pubblico è sicuramente consigliabile rimuovere la password del mio account Gmail (nonostante abbia usato una password per le app, anche se ormai l’ho già distrutta).
Come rimediare
-
Create un file di testo, col nome che volete (esempio passwords.txt), con all’interno le parole chiavi da rimuovere.Importante! Le parole chiavi devono essere 1 per riga.
pas5word123 s3cr3t c1scol1fe
-
Scaricate lo strumento BFG Repo-Cleaner
-
Clonate il repo in una cartella (ad esempio
C:\TEMP\repo-da-pulire
) con il seguente comando:git clone --mirror https://github.com/mlazzarotto/amazon-price-scraper.git
(Ovviamente sostituendo l’url con quello del vostro repo.)
-
Aprite una finestra Prompt o PowerShell e date il seguente comando sostituendo ovviamente il nome del file con le password da rimuovere e la cartella dove avete clonato il repo:
java -jar d:\mlazz\Downloads\bfg-1.13.0.jar --replace-text passwords.txt my-repo.git
-
Una volta eseguita l’operazione, per applicare le modifiche su Github date il comando seguente:
cd amazon-price-scraper.git git reflog expire --expire=now --all && git gc --prune=now --aggressive
In questo modo avrete rimosso tutte le password scomode dal repository di Github e da tutti i commit precedenti.
Questo significa che se qualcuno dovesse andare a controllare la cronologia di tutti i commit precedenti che avete fatto, non troverà la password, ma la parola ***REMOVED***, come potete vedere nell’immagine qui sotto.