Vraag Hoe vertel ik Git voor Windows waar ik mijn persoonlijke RSA-sleutel kan vinden?


Mijn Git-setup werkt prima op Linux, maar als ik dingen onder Windows probeer in te stellen (met Git voor Windows en TortoiseGit), Ik weet niet waar ik mijn persoonlijke SSH-sleutel moet plaatsen (of, nog beter, hoe te vertellen ssh waar het zich bevindt). Ik gebruik de standaard ssh.exe-optie tijdens de installatie van Git voor Windows. De setup wordt prima uitgevoerd als ik wachtwoordverificatie (in plaats van RSA) op de server toesta.


461
2017-10-25 16:45


oorsprong


Ik heb hetzelfde probleem, ik kan ssh in mijn dev-vak met behulp van een openbare sleutel als "root" met behulp van het "Git Bash" -programma dat is geïnstalleerd met "Git For Windows", maar ik kan niet inloggen als "git" met mijn sleutel, hoewel ik mijn "authorized_keys" -bestand heb gekopieerd van mijn "root" naar mijn "git" -gebruiker en de eigenaren en rechten correct heb ingesteld. Waarom kan ik niet inloggen als "git" wanneer "root" werkt met exact hetzelfde "authorized_keys" -bestand. In plaats daarvan geeft het voor "git" alle privésleutels door, wat exact hetzelfde is als dat dat werkt met "root" en vraagt ​​om een ​​wachtwoord. Dit is trouwens een Centos 5.5-server. - Jarrod Roberson
@fuzzy lollipop: Heb je de juiste rechten op het authorized_keys-bestand van je git-gebruiker? Het moet chmod 600 zijn en eigendom zijn van de git-gebruiker. Als het eigendom is van de root-gebruiker, werkt het niet - Dan McClain
Ja, alle bestanden en mappen zijn de juiste eigenaars en machtigingen - Jarrod Roberson


antwoorden:


Voor Git Bash

Als je msysgit gebruikt (ik neem aan dat je dat bent) en Git Bash wilt gebruiken (ik raad het aan op TortoiseGit, maar ik leun nu meer op de CLI dan op GUI), je moet uitzoeken wat je home-directory is voor Git Bash door het te starten en typ dan pwd (In Windows 7 zal het zoiets zijn C:\Users\phsr I denk). Terwijl je in Git Bash bent, zou je dat moeten doen mkdir .ssh.

Nadat u de basismap hebt en a .ssh map daaronder, wil je PuTTYgen openen en de sleutel (.ppk-bestand) openen die je eerder hebt gemaakt. Zodra uw sleutel geopend is, wilt u selecteren Conversions -> Export OpenSSH key en sla het op HOME\.ssh\id_rsa. Nadat je de sleutel op die locatie hebt, zal Git Bash de sleutel herkennen en gebruiken.

Opmerking: Opmerkingen geven aan dat dit niet in alle gevallen werkt. Mogelijk moet u de OpenSSH-sleutel kopiëren naar Program Files\Git\.ssh\id_rsa (of Program Files (x86)\Git\.ssh\id_rsa).

Voor TortoiseGit

Wanneer je TortoiseGit gebruikt, moet je de SSH-sleutel instellen via pacey's aanwijzingen. U moet dat doen voor elke repository waarmee u TortoiseGit gebruikt.


459
2017-11-05 17:18



pacey's instructies voor tortoisegit zullen niet werken totdat je de repository hebt (omdat de 'remote' configuratie-instelling niet verschijnt, tenzij je op een repo handelt), en je de repository waarschijnlijk niet kunt krijgen als je kunt ' t authenticeer jezelf om te klonen van de oorsprong. Tricky! - Kylotan
Met GitBash merkte ik dat ik mijn moest kopiëren ~/.ssh/id_rsa bestand naar Program Files\Git\.ssh\id_rsa - wat een beetje verwarrend was, maar nu kunnen IntelliJ en Windows cmd repositories pushen die sleutelverificatie gebruiken. - JP.
Hetzelfde. Ik heb net git-for-windows geïnstalleerd, ik gebruik het vanaf cmd.exe. Ik moest de bestanden plaatsen id_rsa en id_rsa.pub in c:\program files (x86)\Git\.ssh . De .ssh dir was al aanwezig. Bedankt, JP. - Cheeso
De tweede paragraaf was goudkleurig. :) - Bjørn
@Damon: het zou moeten zijn id_rsa zonder de extensie. Dat is de bestandsnaam, het is geen map - Dan McClain


Met behulp van de ingebouwde SSH-client die wordt geleverd met Git voor Windows, moet je de HOME-omgevingsvariabele instellen, zodat de Git SSH-client de sleutel kan vinden.

Bijvoorbeeld op een Windows Vista installatie, zou dit gedaan worden door uit te geven setx HOME c:\Users\admin\ op de opdrachtregel.

Het maakte mijn dag en loste het probleem op met Git op voorwaarde dat uw privésleutel niet met een wachtwoord is beveiligd. Als je ssh-agent wilt gebruiken, dan kun je waarschijnlijk ssh-agent cmd.exe uitvoeren (hoewel ik dat nog nooit heb gedaan) en de ssh-add zoals gewoonlijk.

Merk op dat alle Git / SSH-tools moeten worden uitgevoerd vanaf een cmd.exe om dit niet te doen knipperen een raam.

Als dit niet correct werkt, kan het gebruik van plink waarschijnlijk worden bereikt door te tweaken GIT_SSH. Raadpleeg alle SVN + ssh-zelfstudies; dit is eigenlijk hetzelfde sanitair dat je moet instellen.


101
2017-11-05 18:24



Dit is wat ik zocht omdat ik probeer de Windows opdrachtprompt te gebruiken, niet git bash. - John Ruiz
Leuke, gemakkelijke oplossing, maar zonder dit zou het moeilijk zijn geweest om erachter te komen! - thaddeusmt
Belangrijk is ook dat er geen lege ruimtes zijn tussen HOME = en c: \ ... De oplossing van Oct heeft de truc voor mij gedaan. :-) - Lutz
De setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use cmd` in plaats daarvan. - trejder
1 GIT_SSH=c:\pathto\plink.exe - Nick Grealy


U kunt de sleutellocatie voor TortoiseGit op de volgende manier specificeren:

  • Open een Explorer-venster.
  • Open het contextmenu en navigeer TortoiseGit → instellingen
  • Navigeer in het nu geopende venster naar Git → afgelegen
  • Stel het pad naar uw PuTTY-sleutel in het overeenkomstige invoervak ​​in.

Een screenshot is hieronder:

Enter image description here


48
2017-11-05 14:07



Als u uw privésleutel in het formaat '.ppk' van een andere indeling wilt converteren, kunt u dit ook doen DEZE - Tariq M Nasim
Het werkte voor mij. - Maxim Eliseev
Git> Remote verschijnt alleen als je de repository met succes hebt gekloond. - Steve Pitchers
Een veel eenvoudigere oplossing is om alles goed op te zetten in git (met behulp van openSSH), en dan TortoiseGit te vertellen om de ssh.exe gebruikt door git te gebruiken. Zien stackoverflow.com/a/33328628/318317 Op die manier hoeft u dit maar één keer te herstellen. - Daniel Rose


Geen van de vorige antwoorden werkte voor mij. Dit was wat uiteindelijk voor mij werkte. Het is eigenlijk vrij eenvoudig, als je weet wat je moet typen. PuTTY is niet nodig.

  • Open een Git Bash-prompt
  • Type 'ssh-keygen'
    • Accepteer de standaardlocatie
    • Kies een lege wachtwoordzin (dus druk gewoon op 'enter' voor alle vragen)
  • Kopieer nu de openbare sleutel naar uw server, bijvoorbeeld: scp ~ / .ssh / id_rsa.pub someuser@someserver.com: ~

Dat is het beetje op je eigen computer gedaan. Nu ssh naar de bestemmingsserver en doe het dan

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

Dat is het! U bent klaar! Doe vanuit Git Bash het volgende om te testen:

ssh someuser@someserver.com ls

Als het de bestanden in je thuismap op de Git-server vermeldt, ben je klaar!

Voor GitHub heb je geen shell-toegang tot hun server, maar je kunt de sleutel uploaden via hun website, dus doe voor het bit 'nu naar je server kopiëren':

  • Typ in Git Bash 'cat ~ / .ssh / id_rsa.pub', selecteer het resultaat en kopieer het naar het klembord.
  • Ga op de GitHub-website naar 'Accountinstellingen', 'SSH- en GPG-sleutels', klik op 'Nieuwe SSH-sleutel' en plak de sleutel.

45
2018-04-25 01:32



Maak geen sleutels zonder wachtzinnen. Het is net alsof u uw wachtwoord in een tekstbestand plaatst, behalve dat iedereen de standaardlocatie voor privésleutels kent. - GregB
U beantwoordt de verkeerde vraag. De Q is hoe te wijzen naar een bestaande privésleutel. - Orangutech
@GregB, ik zie het zo: elke server waarvoor ik een wachtwoordloze sleutel maak, is net zo veilig als mijn laptop, het is een uitbreiding van de beveiligingsperimeter van mijn laptop. Eigenlijk, zelfs niet, omdat mijn thuismap is gecodeerd ;-) Dus, het is net zo veilig als de gecodeerde thuispartitie op mijn laptop, die 'goed genoeg' is om toegang tot Github te krijgen, naar mijn mening. (dat kan natuurlijk afwijken van uw mening!) - Hugh Perkins
@GregB Val niet in paranoia! :] Natuurlijk is het gebruik van wachtwoordbeveiligde sleutels veel veiliger dan wachtwoordloos gebruiken, maar beweren dat een wachtwoordloze sleutel net zo gemakkelijk te doorbreken is als het opslaan van wachtwoorden in een tekstbestand een valse fout is. Ik heb veel handleidingen gezien die gebruikers aanmoedigen om met een wachtwoord beveiligde sleutels te gebruiken, maar ik heb nooit beweerd dat het gebruik ervan zonder wachtwoorden helemaal niet veilig is. Plus: sommige systemen ondersteunen geen oplossingen voor het onthouden van het wachtwoord van de sleutel, ingevoerd door gebruikers, en vraagt ​​ernaar, elke keer dat de sleutel wordt gebruikt. Wat het gebruik van SSH-sleutels zinloos maakt in deze situatie. - trejder
In het belang van het gesprek, dat is afgeweken van de oorspronkelijke vraag, zijn SSH-sleutels zeker cryptografischer beveiligd dan wachtwoorden, maar die beveiliging wordt in gevaar gebracht door uw SSH-sleutels niet te versleutelen. Mijn persoonlijke benadering is om mijn sleutels aan het begin van de dag te ontgrendelen met behulp van een SSH-agent, die vervolgens de ontsleutelde sleutels in het geheugen bewaart, zodat ik het wachtwoord de hele dag niet opnieuw hoef in te voeren. Zoals @Hugh Perkins opmerkt, en ik parafraseer, ken je allemaal je beveiligingsvereisten beter dan ik / wij :). - GregB


Als u msysgit met de OpenSSH-hulpmiddelen gebruikt, moet u ofwel maken ~/.ssh/id_rsaof maak een Git-configuratie aan in ~/.ssh/config die naar je sleutel wijst.

Hier is een voorbeeld van een Git-configuratie voor Bitbucket die de juiste gebruikersnaam en een andere sleutel dan de standaardsleutel gebruikt (voor het geval dat u één sleutel onderhoudt voor SSH-verbindingen en een andere voor Git-accounts).

~ / .Ssh / config:

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

Eenmaal in Git Bash kun je twee commando's uitvoeren om je sleutel toe te voegen aan de ssh-agent van je huidige sessie, om te voorkomen dat je het wachtwoord van de sleutel herhaaldelijk moet invoeren.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key

34
2018-04-11 06:34



Ik deed dit maar voor github.com: Host github.com IdentityFile ~ / .ssh / github_rsa - Sarah Vessels
Als u een spatie op uw pad heeft, moet u aanhalingstekens gebruiken: IdentityFile "/ C / My Keys / key" - r03
Ik geef de voorkeur aan deze manier, omdat dit me toestond dat er snel verbinding bestond met de toetsen van een andere pc - Kirill Gusyatin
Mijn .gitconfig heeft secties. Onder welke secties moet ik deze hosts plaatsen? - Steve Yakovenko


Ik heb zojuist% HOME% =% HOMEPATH% ingesteld

Dit heeft het voordeel van werken voor alle gebruikers die zijn aangemeld bij het systeem (ze krijgen elk afzonderlijke .ssh-mappen).

In Vista:

  1. Klik met de rechtermuisknop op Computer
  2. Kies Eigenschappen
  3. Klik op Geavanceerde systeeminstellingen
  4. Klik op Omgevingsvariabelen
  5. In het onderste gedeelte (Systeemvariabelen) Klik op Nieuw
  6. Voor Variabel naamtype: HOME
  7. Voor Variabel padtype:% HOMEPATH%
  8. Klik OK

14
2017-10-12 01:26



In mijn geval heb ik HOME =% USERPROFILE% toegevoegd - igor
Let daar op %HOMEPATH% bevat niet de stationsletter, dus als uw bron niet is ingeschakeld C: je moet voorafgaan C: naar %HOME%. - Graeme Perrow


Uw persoonlijke sleutel moet worden toegevoegd aan de SSH-agent op uw werkstation. Hoe u dit bereikt, kan afhangen van wat voor git client u gebruikt, hoewel puTTY en de bijbehorende agent (optocht) u misschien de juiste oplossing bieden, hier is de link naar de officiële binaire bestanden en de bron:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


7
2017-10-25 17:38



Ik heb hierboven aangegeven dat ik Git voor Windows gebruik en gebruik ssh.exe (packaged w / git) in plaats van stopverf. Er moet een standaardpraktijk zijn om een ​​privésleutel toe te voegen, ik kan er gewoon niet achter komen hoe. Terwijl het schakelen tussen software me inderdaad in staat stelt om in te loggen, moet er een manier zijn om dit te doen met de standaard Git-instelling, niet? - binaryorganic
Sorry, ik werk niet op Windows, alleen Linux. Maar de sleutel moet wel in uw SSH-agent staan. is er een agent.exe of iets in die richting? - Declan Shanaghy
Ja, setup was taart aan de linux kant. Maar ik moet het helaas ook aan Windows laten werken. Er zijn verschillende ssh-gerelateerde uitvoerbare bestanden in de git / bin-map op de Windows-box (ssh, ssh-add, ssh-agent, ssh-keygen & ssh-keyscan), maar ik weet niet hoe ik ze moet maken doe iets. Ze knipperen gewoon een cmd venster open en sluiten meteen. Ik heb geen idee. - binaryorganic
Pageant lost het probleem inderdaad voor mij op - ik heb een snelkoppeling in de opstartmap van het Startmenu (C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) wijzen naar "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", zodat het mijn SSH-sleutels laadt bij het opstarten en dit maakt GIT "gewoon goed": o) - Owen Blacker
@ OwenBlacker OMFG! U zeker zou moeten schrijf deze opmerking als een volledige grootte antwoord! Dit is de enige oplossing hier, dat heeft me echt geholpen en mijn probleem opgelost! Jammer, dat ik je alleen +1 kan geven! :] - trejder


OK, ik keek naar de suggestie van ..

Maar het plaatsen van mijn persoonlijke SSH-sleutels in een openbare map vond ik niet een goed idee, dus begon ik te zoeken waar de bekende host was.

Dus als u uw SSH-sleutel correct wilt beveiligen, moet u uw sleutel in de volgende directory plaatsen:

Voor Windows 7, 8 en 8.1 32-bit:

C: \ Users \\ AppData \ Local \ VirtualStore \ Program Files \ Git \

Voor Windows 7, 8 en 8.1 64-bit:

C: \ Users \\ AppData \ Local \ VirtualStore \ Program Files (x86) \ Git \


4
2017-09-08 10:04



Hallo Bas. Ik vind dat je je vraag moet verwijderen en vragen of doorgeven Super gebruiker omdat dit de verkeerde site is voor dit soort vraag / antwoord :-) - Ian Macintosh
Het is geen kwestie van mij maar sugestie - Bas van den Dikkenberg
Dit was de eenvoudigste oplossing op mijn Win7-machine. Zoals jij, waar ik naar zocht known_hosts. Ja hoor, het was binnen C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh. Door mijn sleutelbestand (id_rsa) in die map te plaatsen, kon ssh het zonder klacht vinden. Ik heb een beetje gelezen - dit is hoe Windows omgaat met (verouderde) software die probeert te schrijven naar verboden gebieden (zoals "C: \ Program Files \"), dus Git's ssh is zich er volledig niet van bewust dat het naar de VirtualStore-directory schrijft, Windows behandelt dat op een transparante manier. Tenminste deze bestanden behoren toe aan een gebruiker! - DaveGauer


In mijn geval gebruikte ik Git voor Windows in de Docker-container windowsservercore.

Mijn Git is geïnstalleerd door chocolatey naar C:\Program Files\Git.

Ik moest het bestand updaten C:\Program Files\Git\etc\ssh\ssh_config hiermee:

Host example.com
   Identityfile ~/.ssh/id_rsa

Toen kon ik de sleutel gebruiken van C:\Users\<user>\.ssh\id_rsa

Als u Git gebruikt voor windows samen met OpenSSH voor Windows. Git gebruikt nog steeds zijn eigen ssh.

Plus als je van plan bent om te gebruiken ssh-keyscan host.com > known_hosts van OpenSSH, wees voorzichtig omdat piping output van stdout van keyscan (op Windows) verandert de codering naar UCS-2, maar OpenSSH kan alleen UTF-8 lezen! Zorg er dus voor dat u de known_hosts bestandscodering.


4
2017-11-02 15:27



Dit hielp, maar voor iedereen die een id_dsa-sleutel gebruikt, moet je ook "PubkeyAcceptedKeyTypes ssh-dss" onder je host toevoegen. - Michael Russo


Ik had soortgelijke problemen en geen van de antwoorden hier loste het probleem op. Het blijkt dat mijn sleutelpaar oorspronkelijk is gegenereerd met een lege wachtwoordzin. (Ik weet het, dom.)

Nadat ik een nieuwe sleutelpaar had gemaakt en de openbare sleutel naar GitHub had geüpload, begon het weer te werken.


2
2018-01-31 23:15



deze. ughhhhhhhhhhhhh. vaarwel 2 uur - Scoop


Bij het mixen van GitHub voor Windows en Git GUI voor Windows kun je tegen problemen aanlopen waarbij Git GUI je blijft vragen om een ​​gebruikersnaam en wachtwoord. De remedie hiervoor is om de externe URL van te veranderen https: (dat is wat GitHub voor Windows maakt) naar het Git-protocol. In de .git map in het configuratiebestand, zoek:

[remote "origin"]
   url = https://github.com/**username**/**reponame**.git
   fetch = +refs/heads/*:refs/remotes/origin/*

Verander het in:

[remote "origin"]
    url = git@github.com:**username**/**reponame**.git
    fetch = +refs/heads/*:refs/remotes/origin/*

2
2017-09-04 22:34



Ja, het is heel vervelend. Het is natuurlijk en gemakkelijk om een ​​repo met github te klonen voor Windows GUI, maar als git cui buiten git shell is mislukt. Ik vraag me af hoe het commando git in de git-shell werkt met https url ... - hiroshi
voor SSH is altijd het voorvoegsel git@{SERVER URL} ? - nmz787
Ja, voor zover ik ooit heb gezien :) - IDisposable
Dit had ik al - vraagt ​​me nog steeds de hele tijd - Ian Grainger