Is er een manier om het typen van wachtwoorden over te slaan bij het gebruik van https: // op GitHub? | a-shops-ranking.com
Vraag Is er een manier om het typen van wachtwoorden over te slaan bij het gebruik van https: // op GitHub?
Ik ben onlangs overgeschakeld naar het synchroniseren van mijn repository's naar https: // op GitHub (vanwege problemen met de firewall), en het vraagt ​​telkens om een ​​wachtwoord. Vroeger had ik een SSH certificaat, en het was genoeg. Is er een manier om het wachtwoord in mijn geval te omzeilen (met behulp van http / https)?
Met Git-versie 1.7.9 en later
Sinds Git 1.7.9 (uitgebracht eind januari 2012) is er een goed mechanisme in Git om te voorkomen dat je je wachtwoord de hele tijd moet typen voor HTTP / HTTPS, genaamd referentiehelpers. (Dankzij dazonic voor het wijzen op deze nieuwe functie in de reacties hieronder.)
Met Git 1.7.9 of hoger kunt u gewoon een van de volgende legitimatiehelpers gebruiken:
... wat Git vertelt om je wachtwoord in het cachegeheugen (standaard) 15 minuten in het cachegeheugen te bewaren. U kunt een langere time-out instellen met:
(Dat voorbeeld werd gesuggereerd in de GitHub-helppagina voor Linux.) U kunt uw referenties ook permanent opslaan als u dat wilt, zie de andere antwoorden hieronder.
GitHub's hulp suggereert ook dat als je Mac OS X gebruikt en gebruikt homebrew om Git te installeren, kunt u de native Mac OS X keystore gebruiken met:
Voor Windows is er een helper genoemd Git Credential Manager voor Windows of wincred in msysgit.
Met Git voor Windows 2.7.3+ (Maart 2016):
Voor Linux kan dat gebruik gnome-keyring(of andere implementatie van keyring, zoals KWallet).
Met Git-versies vóór 1.7.9
Met versies van Git vóór 1.7.9 is deze meer beveiligde optie niet beschikbaar en moet je de URL wijzigen die je hebt origin gebruik op afstand om het wachtwoord op deze manier op te nemen:
... met andere woorden met :password na de gebruikersnaam en vóór de @.
U kunt een nieuwe URL instellen voor uw origin afstandsbediening met:
Zorg ervoor dat je gebruikt https en je moet weten dat als je dit doet, je GitHub-wachtwoord in gewone tekst wordt opgeslagen in je .git directory, wat uiteraard ongewenst is.
Met elke Git-versie (wel, sinds versie 0.99)
Een alternatieve benadering is om uw gebruikersnaam en wachtwoord in uw ~/.netrc bestand, hoewel, net als bij het bewaren van het wachtwoord in de externe URL, dit betekent dat uw wachtwoord in platte tekst op de schijf wordt opgeslagen en dus minder veilig is en niet wordt aanbevolen. Als u echter deze benadering wilt volgen, voegt u de volgende regel toe aan uw ~/.netrc:
... vervangen <hostname> met de hostnaam van de server, en <username> en <password> met uw gebruikersnaam en wachtwoord. Vergeet ook niet om beperkende bestandssysteemrechten voor dat bestand in te stellen:
Merk op dat dit bestand in Windows moet worden aangeroepen _netrc, en je moet mogelijk de% HOME% omgevingsvariabele definiëren - voor meer details zie:
Git - Hoe .netrc bestand op windows te gebruiken om gebruikers en wachtwoorden op te slaan
Je kunt Git ook je referenties permanent laten opslaan met behulp van het volgende:
Opmerking: Hoewel dit handig is, slaat Git uw inloggegevens op in duidelijke tekst een lokaal bestand (.git-referenties) onder uw projectdirectory (zie hieronder voor de "home" -directory). Als u dit niet leuk vindt, verwijdert u dit bestand en schakelt u over naar het gebruik van cache optie.
Als je wilt dat Git doorgaat met het opnieuw vragen naar referenties als dat nodig is verbinding maken met de externe repository, kunt u deze opdracht uitvoeren:
Om de wachtwoorden op te slaan .git-credentials in uw %HOME% directory in tegenstelling tot de projectdirectory: gebruik de --global vlag
TLDR; Gebruik een gecodeerd netrc-bestand met Git 1.8.3+.
Een wachtwoord opslaan voor een Git-repository HTTPS-URL is mogelijk met een ~/.netrc (Unix) of %HOME%/_netrc (merk op _) op Windows.
Maar: Dat bestand bewaart uw wachtwoord in platte tekst.
Oplossing: Versleutel dat bestand met GPG (GNU Privacy Guard), en zorg ervoor dat Git het decodeert telkens als het een wachtwoord nodig heeft (voor push/pull/fetch/clone operatie).
Opmerking: met Git 2.18 (Q2 2018) kunt u nu de GPG aanpassen die wordt gebruikt om de versleutelde gegevens te decoderen .netrc het dossier.
Zien commit 786ef50, commit f07eeed (12 mei 2018) door Luis Marsano (``).
(Samengevoegd door Junio ​​C Hamano - gitster - in commit 017b7c5, 30 mei 2018)
git-credential-netrc: aanvaarden gpg keuze
git-credential-netrc was hardcoded om te decoderen met 'gpg' los van de optie gpg.program.
Dit is een probleem met distributies zoals Debian die moderne GnuPG iets anders noemen, zoals 'gpg2'
Stapsgewijze instructies voor Windows
(Git heeft een gpg.exe in de distributie, maar met behulp van een volledige GPG-installatie bevat een gpg-agent.exe, die uw wachtwoordzin van uw GPG-sleutel onthoudt.)
Installeren gpg4Win Lite, de minimale opdrachtregelinterface van gnupg (neem de meest recente gpg4win-vanilla-2.X.Y-betaZZ.exe) en voltooi uw PATH met de GPG-installatiemap:
(Merk op 'copy'opdracht: Git heeft een Bash-script nodig om het commando uit te voeren'gpg'. Sinds gpg4win-vanilla-2 komt met gpg2.exe, je moet het dupliceren.)
Maak of importeer een GPG-sleutel en vertrouw deze:
(Zorg ervoor dat u een wachtwoordzin op die sleutel zet.)
Vertrouw die sleutel
Installeer het legitimatieshelp-script in een map binnen uw %PATH%:
(Ja, dit is een Bash-script, maar het werkt op Windows omdat het door Git wordt aangeroepen.)
Maak een _netrc-bestand in duidelijke tekst
(Vergeet de 'protocol' een deel: 'http'of'https'afhankelijk van de URL die u wilt gebruiken.)
Versleutel dat bestand:
(Dat kan nu verwijderen de _netrc bestand, alleen de _netrc.gpg gecodeerde.)
Gebruik dat gecodeerde bestand:
(Merk op '/': C:\path\to... zou helemaal niet werken.) (Je kunt het eerst gebruiken -v -d om te zien wat er aan de hand is.)
Vanaf nu zal elke Git-opdracht die een HTTP (S)--URL gebruikt waarvoor verificatie is vereist, die ontsleutelen _netrc.gpgbestand en gebruik de login / wachtwoord gekoppeld aan de server waarmee u contact opneemt. De eerste keer vraagt ​​GPG je om de wachtwoordzin van je GPG-sleutel om het bestand te decoderen. De andere keren, de gpg-agent automatisch gelanceerd bij de eerste GPG-oproep zal die wachtwoordzin voor u worden opgegeven.
Op die manier kun je onthouden verscheidene URL's / logins / wachtwoorden in één bestand, en laat het op uw schijf versleuteld opslaan.
Ik vind het handiger dan een "cache" helper ", waar je een wachtwoord voor elk van je externe services moet onthouden en typen (een keer per sessie), want dat wachtwoord moet in het cachegeheugen worden opgeslagen.
Er is een eenvoudige, ouderwetse manier om gebruikersreferenties op te slaan in een HTTPS-URL:
U kunt de URL wijzigen met git remote set-url <remote-repo> <URL>
Het duidelijke nadeel van die aanpak is dat je het wachtwoord in platte tekst moet opslaan. U kunt nog steeds gewoon de gebruikersnaam invoeren (https://user@github.com/...) wat je in ieder geval de helft van het gedoe bespaart.
U kunt er de voorkeur aan geven om naar SSH over te schakelen of om de GitHub-clientsoftware te gebruiken.
Gebruik een referentieopslag.
Voor git 2.11+ aan OSX en linux, gebruik het ingebouwde inloggegevensarchief van git:
Voor msysgit 1.7.9+ aan ramen:
Gebruik voor Git 1.7.9+ op OS X:
Je kunt gewoon gebruiken
Wanneer u de volgende keer het wachtwoord invoert met trekken of duwen, wordt het opgeslagen in .git-referenties als platte tekst (een beetje onveilig, maar zet hem gewoon in de beveiligde map)
En dat is het, zoals vermeld op deze pagina:
Ik ben waarschijnlijk een beetje traag, maar het was me niet meteen duidelijk dat ik eerst de helper moest downloaden! Ik vond de credential.helper-download bij Atlassian's Permanente authenticatie met Git-bibliotheken, hoop dat het helpt.
Volg deze stappen als u Git wilt gebruiken met inlogcaching in OSX:
Download de binaire git-credential-osxkeychain.
Voer de onderstaande opdracht uit om te zorgen dat het binaire bestand uitvoerbaar is:
Zet het in de map / usr / local / bin.
Op een GNU / Linux-setup werkt een ~ / .netrc ook best goed:
Het kan afhankelijk zijn van de netwerkbibliotheken waar Git voor gebruikt HTTPS vervoer.
Django dynamische modelvelden Java genest generiek type Detecteren of pad absoluut of relatief is Visual Studio 2015 RTM Cordova-project zal niet debuggen / implementeren naar Android, Windows, Windows Phone Stripe payment-voorbeeld wordt niet weergegeven Tensorflow-fout "shape Tensorshape () moet rang 1 hebben" Hoe een StyleCop-waarschuwing te onderdrukken?