Chcę używać funkcji push i pull automatycznie w GitExtension , bez podawania mojego użytkownika i hasła za każdym razem.
Jak mogę zapisać swoje dane uwierzytelniające w git?
Chcę używać funkcji push i pull automatycznie w GitExtension , bez podawania mojego użytkownika i hasła za każdym razem.
Jak mogę zapisać swoje dane uwierzytelniające w git?
Odpowiedzi:
Biegać
git config --global credential.helper store
następnie
git pull
podaj nazwę użytkownika i hasło, a dane te zostaną zapamiętane później. Poświadczenia są przechowywane w pliku na dysku, z uprawnieniami do dysku „tylko do odczytu / zapisu przez użytkownika”, ale nadal w postaci zwykłego tekstu.
Jeśli chcesz zmienić hasło później
git pull
Nie powiedzie się, ponieważ hasło jest niepoprawne, git następnie usuwa użytkownika naruszającego hasło + hasło z ~/.git-credentials
pliku, więc teraz uruchom ponownie
git pull
aby podać nowe hasło, aby działało jak wcześniej.
Możesz użyć, git config
aby włączyć przechowywanie poświadczeń w git.
git config --global credential.helper store
Podczas uruchamiania tego polecenia przy pierwszym pobieraniu lub wypychaniu ze zdalnego repozytorium zostaniesz zapytany o nazwę użytkownika i hasło.
Następnie, w celu dalszej komunikacji ze zdalnym repozytorium, nie musisz podawać nazwy użytkownika i hasła.
Format przechowywania to .git-credentials
plik przechowywany w postaci zwykłego tekstu.
Możesz także użyć innych pomocników do git config credential.helper
pamięci podręcznej, a mianowicie:
git config credential.helper cache <timeout>
co trwa opcjonalnie timeout parameter
, określając, jak długo poświadczenia będą przechowywane w pamięci. Za pomocą pomocnika poświadczenia nigdy nie dotkną dysku i zostaną usunięte po upływie określonego czasu. default
Wartość jest900 seconds (15 minutes).
OSTRZEŻENIE : Jeśli użyjesz tej metody, hasła do konta git zostaną zapisane w plaintext
formacie global .gitconfig file
, np. W systemie Linux będzie to/home/[username]/.gitconfig
Jeśli jest to dla Ciebie niepożądane, użyj ssh key
zamiast tego dla swojego konta.
git config credential.helper cache
przypadku haseł nie zostaną zapisane w pliku, tylko przechowywane w pamięci. Zobacz: git-scm.com/docs/git-credential-cache
Zalecana i bezpieczna metoda: SSH
Utwórz klucz sith Github. Przejdź do github.com -> Ustawienia -> Klucze SSH i GPG -> Nowy klucz SSH. Teraz zapisz swój klucz prywatny na swoim komputerze.
Następnie, jeśli klucz prywatny zostanie zapisany jako id_rsa w katalogu ~ / .ssh / , dodajemy go do uwierzytelnienia jako taki:
ssh-add -K ~/.ssh/id_rsa
Bardziej bezpieczna metoda: buforowanie
Możemy użyć git-credential-store do buforowania naszej nazwy użytkownika i hasła przez pewien czas. Po prostu wprowadź następujące dane w interfejsie CLI (terminal lub wiersz poleceń):
git config --global credential.helper cache
Możesz również ustawić limit czasu (w sekundach) jako taki:
git config --global credential.helper 'cache --timeout=3600'
Jeszcze mniej bezpieczna metoda
Można także użyć Git-credential-store, ale zapisuje hasła w postaci zwykłego pliku tekstowego na dysku:
git config credential.helper store
Nieaktualna odpowiedź - Szybka i niepewna
Jest to niepewna metoda przechowywania hasła w postaci zwykłego tekstu. Jeśli ktoś przejmie kontrolę nad twoim komputerem, twoje hasło zostanie ujawnione!
Możesz ustawić swoją nazwę użytkownika i hasło w następujący sposób:
git config --global user.name "your username"
git config --global user.password "your password"
W Terminalu wprowadź następujące dane:
# Set git to use the credential memory cache
git config --global credential.helper cache
Domyślnie Git będzie buforować twoje hasło przez 15 minut.
Aby zmienić domyślny limit czasu pamięci podręcznej haseł, wprowadź następujące dane:
# Set the cache to timeout after 1 hour (setting is in seconds)
git config --global credential.helper 'cache --timeout=3600'
cache
część na store
. Tak, pełna komenda będzie: git config --global credential.helper store
. Pamiętaj, że spowoduje to przechowywanie Twojego hasła w pliku tekstowym (bez szyfrowania, że tak powiem).
--timeout
parametru?
Możesz edytować ~/.gitconfig
plik, aby zapisać swoje dane uwierzytelniające
sudo nano ~/.gitconfig
Które powinny już mieć
[user]
email = your@email.com
user = gitUSER
Powinieneś dodać na dole tego pliku.
[credential]
helper = store
Powodem, dla którego zalecam tę opcję, jest to, że jest globalna i jeśli w dowolnym momencie musisz usunąć opcję, wiesz, gdzie się udać i ją zmienić.
WYKORZYSTUJ TĄ OPCJĘ TYLKO W KOMPUTERZE OSOBISTYM.
Potem kiedy pociągniesz | klon | wpisz hasło git, ogólnie hasło zostanie zapisane w ~/.git-credentials
formacie
https://GITUSER:GITPASSWORD@DOMAIN.XXX
GDZIE DOMAIN.XXX MOŻE BYĆ GITHUB.COM | BITBUCKET.ORG | INNY
Zobacz dokumenty
Wystarczy wpisać swoje dane uwierzytelniające w adresie URL w następujący sposób:
https://Username
:Password
@github.com/myRepoDir/myRepo.git
Możesz przechowywać go w następujący sposób:
git remote add myrepo https://Userna...
... przykład użycia :
git push myrepo master
Teraz jest lista aliasów adresów URL:
git remote -v
... i że polecenie usunięcia jednego z nich:
git remote rm myrepo
git@github.com:Username/myRepo.git
https
, ale nie ssh
, więc takie rozwiązanie może być przydatne. Pamiętaj też, że możesz użyć tokena oauth, który jest nieznacznie bezpieczniejszy niż hasło do GitHub.
W celu ustawienia globalnego otwórz terminal (z dowolnego miejsca) uruchom następujące polecenie:
git config --global user.name "your username"
git config --global user.password "your password"
W ten sposób wszelkie lokalne repozytorium git, które masz na swoim komputerze, wykorzysta te informacje.
Możesz indywidualnie skonfigurować dla każdego repozytorium, wykonując:
uruchom następujące:
git config user.name "your username"
git config user.password "your password"
Wpływa tylko na ten folder (ponieważ twoja konfiguracja jest lokalna).
--local
tag, ale znowu nic się nie dzieje
Możesz użyć git-credential-store do przechowywania haseł niezaszyfrowanych na dysku, chronionych tylko przez uprawnienia systemu plików.
Przykład
$ git config credential.helper store
$ git push http://example.com/repo.git
Username: <type your username>
Password: <type your password>
[several days later]
$ git push http://example.com/repo.git
[your credentials are used automatically]
Możesz sprawdzić poświadczenia zapisane w pliku ~/.git-credentials
Aby uzyskać więcej informacji, odwiedź git-credential-store - Pomocnik do przechowywania poświadczeń na dysku
Będziesz bardziej bezpieczny, jeśli użyjesz uwierzytelniania SSH niż uwierzytelnianie nazwy użytkownika / hasła.
Jeśli używasz komputera Mac, uwierzytelnianie klienta SSH jest zintegrowane z pękiem kluczy systemu MacOS. Po utworzeniu klucza SSH wpisz w swoim terminalu:
ssh-add -K ~/.ssh/id_rsa
Spowoduje to dodanie prywatnego klucza SSH do pęku kluczy MacOS. Klient git użyje ssh podczas łączenia się ze zdalnym serwerem. Dopóki zarejestrujesz swój klucz publiczny ssh na serwerze, nic ci nie będzie.
SSH
. Korzystając z uwierzytelniania HTTP, ktoś, kto ukradnie poświadczenia, będzie miał dostęp tylko do GitHub/GitLab
. Również tokeny mają ograniczoną żywotność.
Po przejrzeniu kilkudziesięciu postów SO, blogów itp. Wypróbowałem każdą metodę i oto, co wymyśliłem. Obejmuje WSZYSTKO.
Są to wszystkie sposoby i narzędzia, za pomocą których możesz bezpiecznie uwierzytelnić git, aby sklonować repozytorium bez interaktywnego monitu o hasło .
Chcesz Just Works ™? To jest magiczna srebrna kula.
Zdobądź token dostępu (zobacz sekcję w cheatheet, jeśli potrzebujesz instrukcji Github lub Gitea) i ustaw go w zmiennej środowiskowej (zarówno dla lokalnego dewelopera, jak i wdrożenia):
MY_GIT_TOKEN=xxxxxxxxxxxxxxxx
W przypadku Github skopiuj i uruchom te wiersze dosłownie :
git config --global url."https://api:$MY_GIT_TOKEN@github.com/".insteadOf "https://github.com/"
git config --global url."https://ssh:$MY_GIT_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://git:$MY_GIT_TOKEN@github.com/".insteadOf "git@github.com:"
Gratulacje, teraz żadne automatyczne klonowanie repozytoriów git nie będzie blokowane pytaniem o hasło, zarówno przy użyciu https, jak i dowolnego stylu ssh url.
Nie używasz Github?
W przypadku innych platform (Gitea, Github, Bitbucket) wystarczy zmienić adres URL. Nie zmieniaj nazw użytkowników (chociaż są one arbitralne, są potrzebne do odrębnych wpisów konfiguracji).
Zgodność
Działa to lokalnie w MacOS, Linux, Windows (w Bash), Docker, CircleCI, Heroku, Akkeris itp.
Więcej informacji
Zobacz sekcję „.gitconfig Zamiast tego” w ściągance.
Bezpieczeństwo
Zobacz sekcję „Bezpieczeństwo” ściągawki.
git config --global credential."https://somegithost.com".username MyUserName
, co jest w twojej Cheatsheet, ale nie gdziekolwiek indziej w tym wątku odpowiedzi. To konkretne rozwiązanie nie odpowiada na pytanie PO, ale odpowiedziało na moje, więc dziękuję!
W takim przypadku potrzebujesz pomocnika git, aby powiedzieć gitowi, aby zapamiętał twoje hasło i nazwę użytkownika GitHub za pomocą następującego wiersza poleceń:
git config --global credential.helper wincred
a jeśli używasz repozytorium przy użyciu klucza SSH, potrzebujesz klucza SSH do uwierzytelnienia.
Żadna z powyższych odpowiedzi nie działała dla mnie. Ciągle otrzymuję następujący każdym razem chciałem fetch
lub pull
:
Enter passphrase for key '/Users/myusername/.ssh/id_rsa':
Dla komputerów Mac
Byłem w stanie powstrzymać to przed pytaniem o moje hasło:
vi ~/.ssh/config
UseKeychain yes
:wq!
Dla Windowsa
Udało mi się go uruchomić, korzystając z informacji z tej wymiany stosów: https://unix.stackexchange.com/a/12201/348665
Oprócz edycji ~/.gitconfig
pliku możesz to zrobić, jeśli zapytasz:
git config --local --edit
lub
git config --global --edit
git config --local user.name 'your username'
git config --local user.password 'your password'
lub
git config --global user.name 'your username'
git config --global user.password 'your password'
Twoja nazwa użytkownika i hasło mogą zawierać niektóre znaki, które złamałyby hasło, jeśli użyjesz podwójnego cudzysłowu.
--local
lub --global
oznacza, że parametry konfiguracji są zapisywane dla projektu lub dla użytkownika systemu operacyjnego.
po prostu użyj
git config --global credential.helper store
i wykonaj polecenie git pull , poprosi o nazwę użytkownika i hasło, odtąd nie będzie wyświetlał monitu o nazwę użytkownika i hasło, będzie przechowywać szczegóły
.git-credentials
to miejsce, w którym twoja nazwa użytkownika i hasło (token dostępu) są przechowywane podczas uruchamiania git config --global credential.helper store
, co sugerują inne odpowiedzi, a następnie wpisz swoją nazwę użytkownika i hasło lub token dostępu:
https://${username_or_access_token}:${password_or_access_token}@github.com
Aby zapisać nazwę użytkownika i hasło (token dostępu):
git config —-global credential.helper store
echo “https://${username}:${password_or_access_token}@github.com“ > ~/.git-credentials
Jest to bardzo przydatne dla robota github, np. W celu rozwiązania automatycznych kompilacji Chain w tym samym repozytorium dokerów , posiadając reguły dla różnych gałęzi, a następnie wyzwalając je, popychając je w post_push
hooker w hubie dokera.
Przykład tego można zobaczyć tutaj w Stackoverflow.
Szybki sposób na buforowanie referencji git:
git config credential.helper 'cache' --timeout=10800
miło i bezpiecznie
limit czasu jest w sekundach.
Po przeczytaniu całego wątku i eksperymentowaniu z większością odpowiedzi na to pytanie, w końcu znalazłem procedurę, która działa dla mnie. Chcę się nim podzielić na wypadek, gdyby ktoś miał do czynienia ze złożonym przypadkiem użycia, ale nadal nie chcę przechodzić przez pełny wątek i strony podręcznika gitcredentials , gitcredentials-store itp., Tak jak ja.
Znajdź poniżej procedurę Sugeruję, JEŚLI (jak ja) masz do czynienia z kilkoma repozytoriami od kilku dostawców (GitLab, GitHub, Bitbucket itp.), Używając kilku różnych kombinacji nazwy użytkownika i hasła. Jeśli zamiast mieć tylko jedno konto do pracy, to może być lepiej zatrudniając git config --global credential.helper store
lub git config --global user.name "your username"
itd rozwiązań, które zostały bardzo dobrze wyjaśnione w poprzednich odpowiedziach.
Moje rozwiązanie:
> git config --global --unset credentials.helper
> cd /path/to/my/repo
> git config --unset credential.helper
> git config credential.helper 'store --file ~/.git_repo_credentials'
Uwaga : to polecenie tworzy nowy plik o nazwie „.git_repo_credentials” w twoim katalogu domowym, w którym Git przechowuje twoje dane uwierzytelniające. Jeśli nie określisz nazwy pliku, Git użyje domyślnego „.git_credentials”. W takim przypadku wystarczy wydać następujące polecenie:
> git config credential.helper store
git config credential.*.username my_user_name
Uwaga : użycie „*” jest zwykle poprawne, jeśli Twoje repozytoria pochodzą od tego samego dostawcy (np. GitLab). Jeśli zamiast tego Twoje repozytoria są hostowane przez różnych dostawców, sugeruję jawne ustawienie linku do dostawcy dla każdego repozytorium, jak w poniższym przykładzie (dla GitLab):
git config credential.https://gitlab.com.username my_user_name
W tym momencie, jeśli git pull
wydasz polecenie wymagające poświadczeń (np. ), Zostaniesz poproszony o hasło odpowiadające „moja_nazwa_użytkownika”. Jest to wymagane tylko raz, ponieważ git przechowuje dane uwierzytelniające na „.git_repo_credentials” i automatycznie używa tych samych danych przy kolejnych dostępach.
Od komentarza rifrol na Linux Ubuntu, od tej odpowiedzi , oto jak w Ubuntu:
sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
Niektóre inne dystrybucje dostarczają plik binarny, więc nie musisz go budować.
W OS X zazwyczaj jest „zbudowany” z domyślnym modułem „osxkeychain”, więc dostajesz go za darmo.
Sprawdź oficjalną dokumentację git:
Jeśli korzystasz z transportu SSH do łączenia się z pilotami, możesz mieć klucz bez hasła, który pozwala bezpiecznie przesyłać dane bez wpisywania nazwy użytkownika i hasła. Nie jest to jednak możliwe w przypadku protokołów HTTP - każde połączenie wymaga nazwy użytkownika i hasła. Jest to jeszcze trudniejsze w przypadku systemów z uwierzytelnianiem dwuskładnikowym, w których token używany do hasła jest generowany losowo i nie można go wymówić.
Na szczęście Git ma system poświadczeń, który może w tym pomóc. Git ma kilka opcji w pudełku:
Domyślnie w ogóle nie jest buforowana. Każde połączenie wyświetli monit o podanie nazwy użytkownika i hasła.
Tryb „pamięci podręcznej” utrzymuje poświadczenia w pamięci przez pewien okres czasu. Żadne z haseł nigdy nie jest przechowywane na dysku i są usuwane z pamięci podręcznej po 15 minutach.
Tryb „przechowywania” zapisuje poświadczenia w pliku tekstowym na dysku i nigdy nie wygasają. Oznacza to, że dopóki nie zmienisz hasła do hosta Git, nigdy więcej nie będziesz musiał wpisywać swoich danych logowania. Minusem tego podejścia jest to, że hasła są przechowywane jako zwykły tekst w zwykłym pliku w katalogu domowym.
Jeśli używasz komputera Mac, Git ma tryb „osxkeychain”, który buforuje poświadczenia w bezpiecznym pęku kluczy dołączonym do konta systemowego. Ta metoda przechowuje poświadczenia na dysku i nigdy nie wygasają, ale są one szyfrowane za pomocą tego samego systemu, który przechowuje certyfikaty HTTPS i autouzupełnianie Safari.
Jeśli używasz systemu Windows, możesz zainstalować pomocnika o nazwie „Git Credential Manager dla systemu Windows”. Jest to podobne do opisanego powyżej pomocnika „osxkeychain”, ale używa Sklepu poświadczeń systemu Windows do kontrolowania poufnych informacji. Można go znaleźć na https://github.com/Microsoft/Git-Credential-Manager-for-Windows .
Możesz wybrać jedną z tych metod, ustawiając wartość konfiguracji Git:
$ git config --global credential.helper cache
$ git config --global credential.helper store