Klonuję repozytorium git w skrypcie takim jak ten:
git clone https://user:[email protected]/name/.git
To działa, ale moja nazwa użytkownika i hasło! są teraz przechowywane w adresie źródłowym w .git/config
.
Jak mogę temu zapobiec, ale nadal zrobić to w skrypcie (aby nie wprowadzać hasła ręcznie)?
git remote set-url origin https://host.com/name/.git
Odpowiedzi:
Metodą, której używam, jest użycie
git pull
zamiast klonu. Skrypt wyglądałby następująco:To nie będzie przechowywać twojej nazwy użytkownika ani hasła
.git/config
. Jednak o ile nie zostaną podjęte inne kroki, nazwa użytkownika i hasło w postaci zwykłego tekstu będą widoczne, gdy proces jest uruchomiony z poleceń wyświetlających bieżące procesy (npps
.).Kolejną sugestią, którą chciałbym zrobić (jeśli nie możesz użyć ssh), jest użycie tokena OAuth zamiast nazwy użytkownika / hasła w postaci zwykłego tekstu, ponieważ jest on nieco bardziej bezpieczny. Możesz wygenerować token OAuth na podstawie ustawień profilu: https://github.com/settings/tokens .
Następnie za pomocą tego tokena polecenie pull byłoby
źródło
ps
Podczas uruchamiania ściągania (przynajmniej chyba, że uniemożliwisz użytkownikom wzajemne widzenie procesów)IMO najlepszym rozwiązaniem jest użycie niestandardowego
GIT_ASKPASS
pomocnika i podanie hasła jako innej zmiennej środowiskowej. Na przykład utwórz plikgit-askpass-helper.sh
jako:a następnie uruchom
git clone https://username@hostname/repo
ze zmiennymi środowiskowymiGIT_ASKPASS=/path/to/git-askpass-helper.sh
iGIT_PASSWORD=nuclearlaunchcodes
.Ma to tę zaletę, że hasło nie będzie widoczne również na liście procesów.
źródło
git pull
rozwiązanie i pozwala przechowywać hasło w postaci zwykłego tekstu jako sekret w wybranym narzędziu do automatycznego wdrażania.Możesz wprowadzić dane uwierzytelniające połączenia w swoim
~/.netrc
pliku. Coś w stylu:Upewnij się tylko, że chmod ten plik do 600. Jeśli używasz systemu Windows, przydatny może być następujący link: https://stackoverflow.com/questions/6031214/git-how-to-use-netrc-file-on- windows-to-save-user-and-password
Osobiście mam tendencję do używania kluczy SSH do celów uwierzytelniania (oczywiście jeśli masz pozwolenie).
źródło
Po przejrzeniu kilkudziesięciu postów SO, blogów itp. Wypróbowałem każdą metodę i oto, co wymyśliłem. Obejmuje WSZYSTKO.
Zobacz The Git Credentials & Private Packages Cheatsheet
Są to wszystkie sposoby i narzędzia, za pomocą których możesz bezpiecznie uwierzytelnić git w celu sklonowania repozytorium bez interaktywnego pytania o hasło .
Najlepsze opcje bez przechowywania tekstu jawnego
Z tego, o co tutaj zapytano, klucze SSH
GIT_ASKPASS
lubgit credential store
użycie menedżera pęku kluczy OS mogą być najlepszym wyborem.Ponieważ GIT_ASKPASS jest prawdopodobnie najmniej zrozumiałym z 3, opiszę to tutaj - a pozostałe są w ściągawce.
GIT_ASKPASS
Jak stworzyć
GIT_ASKPASS
skrypt:Jak tego użyć:
Skrypt otrzymuje standardowe wejście w postaci:
Skrypt odbiera Git ENV, takie jak:
Więcej szczegółów w ściągu .
źródło