Come faccio a dire a Git per Windows dove trovare la mia chiave RSA privata?


487

La mia installazione di Git funziona bene su Linux, ma quando provo a configurare le cose su Windows (usando Git per Windows e TortoiseGit ), non so dove mettere la mia chiave SSH privata (o, meglio ancora, come dire sshdove si trova si trova). Sto usando l'opzione standard ssh.exe durante l'installazione di Git per Windows. L'installazione funziona correttamente se autorizzo l'autenticazione della password (al posto di RSA) sul server.


Ho lo stesso problema, posso accedere a ssh nella mia casella di sviluppo usando una chiave pubblica come "root" usando il programma "Git Bash" installato con "Git For Windows" ma non riesco ad accedere come "git" con il mio chiave anche se ho copiato il mio file "authorized_keys" dal mio "root" al mio utente "git" e ho impostato correttamente i proprietari e le autorizzazioni. Perché non riesco ad accedere come "git" quando "root" funziona con lo stesso file "authorized_keys". Invece per "git" passa tutte le chiavi private, che sono esattamente le stesse che funzionano con "root" e chiede una password. Questo è comunque un server Centos 5.5.

@fuzzy lollipop: hai i permessi giusti sul file authorized_keys del tuo utente git? Dovrebbe essere chmod 600 e dovrebbe essere di proprietà dell'utente git. Se è di proprietà dell'utente root, non funzionerà
Dan McClain il

sì, tutti i file e le directory sono i proprietari e le autorizzazioni

Risposte:


486

Per Git Bash

Se stai eseguendo msysgit (suppongo che lo sia) e stai cercando di eseguire Git Bash (lo consiglio su TortoiseGit, ma ora mi appoggio alla CLI più della GUI), devi capire qual è la tua home directory per Git Bash avviandolo quindi digita pwd(su Windows 7, sarà qualcosa come C:\Users\phsrpenso). Mentre sei in Git Bash, dovresti mkdir .ssh.

Dopo avere la directory home e una .sshcartella sotto quella, si desidera aprire PuTTYgen e aprire la chiave (file .ppk) precedentemente creata. Una volta aperta la chiave, si desidera selezionarla Conversions -> Export OpenSSH keye salvarla HOME\.ssh\id_rsa. Dopo aver ottenuto la chiave in quella posizione, Git Bash riconoscerà la chiave e la utilizzerà.

Nota: i commenti indicano che ciò non funziona in tutti i casi. Potrebbe essere necessario copiare la chiave OpenSSH in Program Files\Git\.ssh\id_rsa(o Program Files (x86)\Git\.ssh\id_rsa).

Per TortoiseGit

Quando si utilizza TortoiseGit, è necessario impostare il tasto SSH tramite le indicazioni di pacey . Devi farlo per ogni repository con cui stai usando TortoiseGit.


4
le istruzioni di pacey per tortoisegit non funzioneranno fino a quando non si avrà il repository (perché l'impostazione di configurazione "remota" non viene visualizzata a meno che non si agisca su un repository) e probabilmente non è possibile ottenere il repository in primo luogo se è possibile " t autenticarti per clonare dall'origine. Difficile!
Kylotan,

43
Con GitBash ho scoperto che dovevo copiare il mio ~/.ssh/id_rsafile Program Files\Git\.ssh\id_rsa, il che era un po 'confuso, ma ora IntelliJ e Windows cmd possono spingere verso git repository che usano l'autenticazione con chiave.
JP.

7
Allo stesso modo. Ho appena installato git-for-windows, lo sto eseguendo da cmd.exe. Avevo bisogno di mettere i file id_rsae id_rsa.pubdentro c:\program files (x86)\Git\.ssh. Il .sshdir era già presente. Grazie JP.
Cheeso,

5
Il secondo paragrafo era d'oro. :)
Bjørn,

4
@Damon: dovrebbe essere id_rsasenza estensione. Questo è il nome del file, non è una directory
Dan McClain,

107

Utilizzando il client SSH integrato fornito con Git per Windows, è necessario impostare la variabile di ambiente HOME in modo che il client Git SSH possa trovare la chiave.

Ad esempio, su un'installazione di Windows Vista , ciò avverrebbe emettendo setx HOME c:\Users\admin\dalla riga di comando.

Ha reso la mia giornata e risolto il problema con Git a condizione che la tua chiave privata non sia protetta da password. Se vuoi usare ssh-agent, allora puoi probabilmente eseguire ssh-agent cmd.exe (anche se non l'ho mai fatto) e ssh-add come al solito.

Si noti che tutti gli strumenti Git / SSH devono essere eseguiti da un cmd.exe per non far lampeggiare una finestra.

Se questo non funziona correttamente, è possibile utilizzare Plink modificando GIT_SSH . Fare riferimento a tutti i tutorial SVN + ssh; questo è fondamentalmente lo stesso impianto idraulico che è necessario impostare.


16
Questo è quello che stavo cercando poiché sto cercando di utilizzare il prompt dei comandi di Windows, non git bash.
John Ruiz,

Bella, semplice soluzione, ma sarebbe stato difficile capire senza questo!
Thaddeusmt,

È anche importante non avere spazi vuoti tra HOME = e c: \ ... La soluzione di Oct ha fatto il trucco per me. :-)
Lutz,

2
Il setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use cmd` invece.
Trejder,

2
+1GIT_SSH=c:\pathto\plink.exe
Nick Grealy,

54

È possibile specificare la posizione della chiave per TortoiseGit nel modo seguente:

  • Apri una finestra di Explorer.
  • Apri il menu contestuale e naviga su TortoiseGitImpostazioni
  • Nella finestra ora aperta, vai a GitRemoto
  • Imposta il percorso del tuo tasto PuTTY nella casella di input corrispondente.

Uno screenshot è sotto:

Inserisci qui la descrizione dell'immagine


8
Inoltre, se hai bisogno di convertire la tua chiave privata in formato ".ppk" da un altro formato, puoi seguire QUESTO
Tariq M Nasim

Ha funzionato per me.
Maxim Eliseev,

6
Git> Remote appare solo dopo aver clonato correttamente il repository.
Steve Pitchers,

5
Una soluzione molto più semplice è impostare tutto funzionando correttamente in git (usando openSSH), e quindi dire a TortoiseGit di usare ssh.exe usato da git. Vedi stackoverflow.com/a/33328628/318317 In questo modo, devi solo risolvere questo problema una volta.
Daniel Rose,

50

Nessuna delle risposte precedenti ha funzionato per me. Ecco cosa ha funzionato per me alla fine. In realtà è abbastanza semplice, se sai cosa digitare. Non ha bisogno di PuTTY.

  • Apri un prompt di Git Bash
  • Digita "ssh-keygen"
    • Accetta la posizione predefinita
    • Scegli una passphrase vuota (quindi premi 'Invio' per tutte le domande ')
  • Ora copia la chiave pubblica sul tuo server, ad esempio: scp ~ / .ssh / id_rsa.pub someuser@someserver.com: ~

Questo è il bit sul tuo computer fatto. Ora sshnel server di destinazione, quindi fallo

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

Questo è tutto! Hai finito! Da Git Bash, eseguire le seguenti operazioni per testare:

ssh someuser@someserver.com ls

Se elenca i file nella tua home directory sul server Git, e allora hai finito!

Per GitHub, non hai accesso shell al loro server, ma puoi caricare la chiave usando il loro sito Web, quindi per il bit 'copia ora sul tuo server', fai:

  • In Git Bash, digita "cat ~ / .ssh / id_rsa.pub", seleziona il risultato e copialo negli appunti.
  • Sul sito Web GitHub, vai su "Impostazioni account", "Chiavi SSH e GPG", fai clic su "Nuova chiave SSH" e incolla la chiave.

8
Non creare chiavi senza passphrase. È come inserire la password in un file di testo, tranne per il fatto che tutti conoscono la posizione predefinita per le chiavi private.
GregB,

14
Stai rispondendo alla domanda sbagliata. La Q è come indicare una chiave privata esistente.
Orangutech,

7
@GregB, la guardo così: qualsiasi server per il quale creo una chiave senza password è sicuro come il mio laptop, è un'estensione del perimetro di sicurezza del mio laptop. In realtà, nemmeno, dato che la mia directory home è crittografata ;-) Quindi, è sicura come la partizione home crittografata sul mio laptop, che è "abbastanza buona" per garantire l'accesso a Github, secondo me. (che può variare ovviamente dalla tua opinione!)
Hugh Perkins,

3
@GregB Non cadere in paranoia! :] Certo, l'uso di chiavi protette da password è molto più sicuro rispetto all'utilizzo senza password, ma affermare che la chiave senza password è facile da violare come archiviare le password in un file di testo è un falso evidente. Ho visto molte guide, che incoraggiano gli utenti a usare chiavi protette da password, ma non ho mai visto alcun reclamo, che utilizzarle senza password non è affatto sicuro. Inoltre: alcuni sistemi non supportano soluzioni per ricordare la password della chiave, immessa dagli utenti e la richiedono, ogni volta che viene utilizzata la chiave. Il che rende inutile l'uso delle chiavi SSH in questa situazione.
Trejder,

4
Per motivi di conversazione, che si è discostato dalla domanda originale, le chiavi SSH sono sicuramente più crittograficamente sicure delle password, ma tale sicurezza è messa a rischio non crittografando le chiavi SSH. Il mio approccio personale è quello di sbloccare le mie chiavi all'inizio della giornata utilizzando un agente SSH, che quindi mantiene in memoria le chiavi decodificate in modo da non dover reinserire la password per tutto il giorno. Come commenta @Hugh Perkins, e sto parafrasando, conoscete tutti i vostri requisiti di sicurezza meglio di me / noi :).
GregB,

38

Se stai usando msysgit con gli strumenti OpenSSH, devi creare ~/.ssh/id_rsao creare una configurazione Git in ~/.ssh/configcui punti la tua chiave.

Ecco un esempio di una configurazione Git per Bitbucket che utilizzerà il nome utente corretto e una chiave diversa dalla chiave predefinita (nel caso in cui si mantenga una chiave per le connessioni SSH e un'altra per gli account Git).

~ / .ssh / config :

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

Una volta in Git Bash, puoi eseguire due comandi per aggiungere la tua chiave all'agente ssh della sessione corrente per evitare di dover digitare ripetutamente la password della chiave.

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

1
L'ho fatto ma per github.com: Host github.com IdentityFile ~ / .ssh / github_rsa
Sarah Vessels

1
Se hai uno spazio sul tuo percorso devi usare le virgolette: IdentityFile "/ C / My Keys / key"
r03

Preferisco così, perché questo mi ha permesso di collegare rapidamente le chiavi esistenti di altri PC
Kirill Gusyatin,

Il mio .gitconfig ha sezioni. In quali sezioni devo inserire questi host?
Steve Yakovenko,

16

Ho appena impostato% HOME% =% HOMEPATH%

Questo ha il vantaggio di funzionare per tutti gli utenti che hanno effettuato l'accesso al sistema (ognuno ottiene cartelle .ssh separate).

In Vista:

  1. Fare clic con il tasto destro del mouse su Computer
  2. Scegli Proprietà
  3. Fai clic su Impostazioni di sistema avanzate
  4. Fai clic su Variabili d'ambiente
  5. Nella sezione inferiore (Variabili di sistema) Fai clic su Nuovo
  6. Per il nome della variabile digitare: HOME
  7. Per il tipo di percorso variabile:% HOMEPATH%
  8. Clicca OK

6
Nel mio caso ho aggiunto HOME =% USERPROFILE%
vigore

1
Nota che %HOMEPATH%non contiene la lettera di unità, quindi se la tua fonte non è accesa C:devi anteporre C:a %HOME%.
Graeme Perrow,

set %HOME%=%HOMEPATH%ha funzionato per me! Grazie!!
teng

7

La chiave privata deve essere aggiunta all'agente SSH sulla workstation. Il modo in cui raggiungi ciò può dipendere dal client git che stai utilizzando, tuttavia puTTY e il suo agente associato (concorso) potrebbero fare il trucco per te, ecco il link ai binari ufficiali e alla fonte:

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


Ho affermato sopra che sto usando Git per Windows e sto usando ssh.exe (pacchetto w / git) al posto di putty. Ci deve essere una pratica standard per l'aggiunta di una chiave privata, non riesco proprio a scoprire come. Mentre il passaggio da un software all'altro può davvero permettermi di accedere, ci deve essere un modo per farlo con la configurazione Git standard, no?
binaryorganic,

Mi dispiace non lavoro su Windows, solo Linux. Ma la chiave deve essere nel tuo agente SSH. c'è un agent.exe o qualcosa del genere?
Declan Shanaghy,

1
Sì, l'installazione è stata semplice dal lato Linux. Ma devo purtroppo farlo funzionare su Windows. Esistono diversi file eseguibili relativi a ssh nella cartella git / bin nella finestra di Windows (ssh, ssh-add, ssh-agent, ssh-keygen e ssh-keyscan), ma non so come crearne uno Fai qualcosa. Battono le palpebre e aprono e chiudono subito una finestra cmd. Sono perplesso.
binaryorganic,

8
Pageant risolve davvero il problema per me - ho una scorciatoia nella cartella Startup del mio menu Start ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) che punta a "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", in modo che carica le mie chiavi SSH all'avvio e questo rende GIT "solo funzionante": o)
Owen Blacker

@OwenBlacker OMFG! Dovresti assolutamente scrivere questo commento come una risposta a grandezza naturale ! Questa è l'unica soluzione qui , che in realtà mi ha aiutato e risolto il mio problema! Peccato, che posso darti solo +1! :]
trejder,

6

Nel mio caso stavo usando Git per Windows nel contenitore Docker windowsservercore.

My Git è stato installato da Chocolatey a C:\Program Files\Git.

Ho dovuto aggiornare il file C:\Program Files\Git\etc\ssh\ssh_configcon questo:

Host example.com
   Identityfile ~/.ssh/id_rsa

Allora potevo usare la chiave di C:\Users\<user>\.ssh\id_rsa

Se stai usando Git per Windows insieme a OpenSSH per Windows. Git sta ancora usando il suo ssh.

Inoltre, se prevedi di utilizzarlo ssh-keyscan host.com > known_hostsda OpenSSH, fai attenzione perché l'output del piping da stdoutof keyscan(su Windows) cambia la codifica in UCS-2, ma OpenSSH può leggere solo UTF-8! Quindi assicurati di cambiare la known_hostscodifica del file.


Questo ha aiutato, ma per chiunque stia usando una chiave id_dsa, dovrai anche aggiungere "PubkeyAcceptedKeyTypes ssh-dss" sotto il tuo host.
Michael Russo,

4

OK, ho esaminato il suggerimento di ..

Ma mettere nelle mie chiavi SSH private nella cartella pubblica non pensavo fosse una buona idea, quindi ho iniziato a cercare dove si trovasse l'host noto.

Quindi, se si desidera proteggere correttamente la chiave SSH, è necessario inserire la chiave nella seguente directory:

Per Windows 7, 8 e 8.1 a 32 bit:

C: \ Users \\ AppData \ Local \ VirtualStore \ Programmi \ Git \

Per Windows 7, 8 e 8.1 a 64 bit:

C: \ Users \\ AppData \ Local \ VirtualStore \ Programmi (x86) \ Git \


Questa era la soluzione più semplice sulla mia macchina Win7. Come te, ho cercato known_hosts. Abbastanza sicuro, era dentro C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh. Inserendo il mio file chiave (id_rsa) in quella directory, ssh è stato in grado di trovarlo senza lamentele. Ho fatto una piccola lettura: è così che Windows gestisce (legacy) il software che tenta di scrivere in aree proibite (come "C: \ Programmi \"), quindi ssh di Git non è del tutto consapevole che sta scrivendo nella directory di VirtualStore, Windows lo sta gestendo in modo trasparente. Almeno questi file appartengono a un utente!
DaveGauer,

4

Il modo più efficiente è usare Pageant perché ti permetterà di scrivere la passphrase solo una volta all'inizio della sessione invece di ogni push. Tutte le risposte qui erano troppo brevi, quindi posterò una guida dettagliata qui:

  1. Scaricare pageant.exe, puttygen.exe, putty.exee plink.exedal sito web di PuTTY. Metterli nella C:\puttyToolsdirectory.
  2. Corri puttygen.exe.
  3. Fare clic sul pulsante Generate.
  4. Spostare il mouse nella parte superiore della finestra fino a quando la barra di avanzamento non è piena, come richiesto dal programma.
  5. Fornire una passphrase e ripeterla nella casella di testo successiva.
  6. Fai clic su "Salva chiave privata". La solita directory in cui salvarli è %USERPROFILE%\_ssh(nel mio computer questa mappa è C:\Users\andres\.ssh\). Non importa come chiami la chiave, ma per scopi dimostrativi, la chiamerò github.ppk. Questo file dovrebbe avere un'estensione di .ppk.
  7. Copia il testo nella casella di testo in alto in PuTTYgen, quello etichettato Public key for pasting into OpenSSH authorized_keys filee incollalo in una nuova chiave SSH nelle impostazioni di GitHub. Dagli un titolo che descriva su quale macchina si trova la chiave (es. "Work laptop").
  8. Esegui pageant.exe, apparirà una nuova icona systray.
  9. Fare clic con il tasto destro sull'icona -> Aggiungi chiave.
  10. Individua il tuo file ppk, inserisci la tua passphrase.
  11. Creare queste nuove variabili di ambiente utente (tramite la ricerca dell'applicazione Environtramite WindowsMenu che troverà Edit environment variables for your account): GIT_SSH = "C:\puttyTools\plink.exe"eSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. Apri putty.exe e prova a connetterti all'host in cui ospiti i tuoi repository Git. Ad esempio, prova a connetterti a github.com tramite SSH e una finestra di dialogo ti chiederà se accetti l'impronta digitale del server: fai clic su SÌ.
  13. Esegui una nuova istanza della tua MINGW64console Git e verifica che le variabili di ambiente siano presenti scrivendo il comando env | grep -i ssh.
  14. Dovresti essere pronto. Prova a clonare con il protocollo Git + SSH dal tuo host.

(Originariamente estratto da queste due guide che ho combinato in una: Come impostare Git per Windows e Configurare MinGW-W64 + MSYS per usare PuTTY Plink / Pageant .)


3

Quando si mescolano GitHub per Windows e Git GUI per Windows, è possibile che si verifichino problemi in cui Git GUI continua a richiedere un nome utente e una password. La cura per questo è di cambiare l'URL remoto da https:(che è ciò che GitHub per Windows crea) al protocollo Git. Nella .gitdirectory nel file di configurazione, trova:

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

Modificalo in:

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

Sì, è molto fastidioso. È naturale e facile clonare un repository con la GUI di github per Windows, ma quando si utilizza git cui al di fuori di git shell non è riuscito. Mi chiedo come funziona il comando git nella shell git con https url ...
hiroshi

per SSH è sempre il prefisso git@{SERVER URL}?
nmz787,

Sì, per quanto ne abbia mai visto :)
IDisposable

Già avuto questo - mi chiede ancora tutto il tempo
Ian Grainger il

3

Il percorso standard per i file è in %USERPROFILE%\.ssh.

%USERPROFILE%è l'equivalente di $ HOME in Unix (normalmente è mappato a qualcosa di simile c:\users\youruserid).

Se stai usando gli strumenti SSH forniti con Git, che sono gli strumenti standard della linea di comando in stile Unix, puoi usare qualcosa come il mio script qui per lavorare con ssh-agent su tutte le shell.


Per i futuri lettori, non%USERPROFILE% is the equivalent of $HOME è l'equivalente di . Un sacco di cattiva recitazione applicazioni Linux porting per il trattamento di Windows t i due la stessa e ma dovrebbero non essere trattati allo stesso modo. $HOME
Micah Zoltu,

Michea, puoi informare le differenze di intenti per questo? Inoltre, anche con intenzioni diverse, sembrerebbe che se tutti gli strumenti usano l'uno come l'altro, allora non diventa effettivamente equivalente?
Eric Blade,

Gli strumenti che utilizzano %USERPROFILE%Windows allo stesso modo di $HOMELinux stanno violando le migliori pratiche / raccomandazioni ben documentate per lo sviluppo di Windows (pubblicate da MS molto tempo fa e aggiornate nel tempo). Ci sono molti strumenti che lo fanno, ma l'argomento per seguirli è molto simile all'argomento "X fa pipì nel pool, quindi dovremmo farlo anche noi". USERPROFILEè dove l'utente memorizza i documenti che crea / salva (ad es. salva la finestra di dialogo). APPDATAè per i dati di configurazione per utente. LOCALAPPDATAè per cache per utente e file di grandi dimensioni. PROGRAMDATAè per la configurazione e la cache a livello di macchina.
Micah Zoltu,

In generale, gli unici strumenti che si comportano in modo errato con USERPROFILE sono strumenti scritti dagli sviluppatori Linux e portati su Windows. Come sviluppatore, probabilmente ne usi molti di questi, quindi sembra che tutti lo stiano facendo, ma al di fuori dell'ecosistema degli strumenti di sviluppo la maggior parte delle applicazioni Windows sono in realtà buoni cittadini. Anche Microsoft a volte commette l'errore di non mettere le cose nel posto giusto (sono una grande azienda), anche se in generale quando le fai notare che fanno uno sforzo per risolvere il problema e seguire le linee guida del sistema operativo.
Micah Zoltu,

1
(scusate, limiti di caratteri StackExchange nei commenti). Ecco maggiori dettagli sulle cartelle e una breve descrizione di ciò che accade in ciascuna. Ci sono anche altre risorse, compresi post di blog più consumabili, ma questo offre la massima precisione tecnica: technet.microsoft.com/en-us/library/cc749104(v=ws.10).aspx
Micah Zoltu

2

Ho avuto problemi simili e nessuna delle risposte qui ha risolto il problema. Si scopre che la mia coppia di chiavi è stata originariamente generata con una passphrase vuota. (Lo so, stupido.)

Dopo aver creato una nuova coppia di chiavi e caricato la chiave pubblica su GitHub, le cose hanno ripreso a funzionare.


1
Questo. ughhhhhhhhhhhhh. arrivederci 2 ore
Scoop

1

La seguente risposta si applica anche a questa domanda quando si esegue ssh dall'account del servizio Windows: Jenkins (servizio Windows) con Git su SSH


Seguendo il link che hai fornito sono stato in grado di ottenere la mia configurazione di Jenkins. Avevo bisogno di impostare la variabile d'ambiente HOME sul percorso del programma Git che conteneva la directory .ssh in cui ho creato la mia chiave SSH.
Spechal

1

Puoi specificare sia il percorso della chiave sia il nome del file della chiave in questo modo (su Ubuntu). Per esempio:

ssh -i /home/joe/.ssh/eui_rsa

Questo risolve assolutamente il problema e ti consente di archiviare le tue chiavi ovunque tu voglia.
DaveGauer,

La domanda riguardava specificamente Windows. Ho git sul mio computer Ubuntu che funziona in questo modo, ma non riesco a dire cosa impostare GIT_SSH_COMMANDsul mio computer Windows.
mjaggard,

1

Pageant (un agente SSH fornito con il bundle PuTTY ) risolve il problema per me.

Ho un collegamento nella cartella Startup del mio menu Start ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) che punta a "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", in modo che carichi i miei tasti SSH all'avvio e questo rende Git "solo funzionante": o)


4
Penso che tu abbia bisogno di diverse altre impostazioni corrette affinché questo funzioni (come GIT_SSH impostato su TortoisePLink.exe, penso?), E sebbene abbia funzionato per me in passato, spesso ho problemi con esso su altre macchine. :-(
Simon East,

Ottengo "Impossibile aprire il file" da Pageant :( che so è impostato correttamente mentre lo sto usando per TortoiseGit :(
Ian Grainger il

1

Molte risposte dicono questo, ma per me non abbastanza in fretta!

in Windows utilizzando msys (console standard di Windows) C:\Users\{you}\.ssh\id_rsa

Fondamentalmente non disturba la scansione delle chiavi installate (almeno non sul mio nuovo laptop) e quindi ha bisogno in particolare id_rsa

Ho riscontrato questo desiderio di clonare alcuni repository di lavoro privati ​​nella CLI MSYS ruby ​​per Windows 10 a 64 bit


0

Se sei su Windows 7/8, dovresti cercare in C: \ Users \ Your_User_Name.ssh Copia e incolla qui il tuo file id_rsa e funzionerà immediatamente.


0

Un errore che ho fatto quando ho usato SSH su Windows era che quando ho tentato di usare le chiavi attraverso il client Git Bash, tutti i file all'interno di ~ / .ssh erano permessi sbagliati, ma non ha tentato di dirmi che era un problema.

Proprio come test, assicurati di aver impostato tutto nella tua directory ~ / .ssh su chmod 600.


0

Se disponi delle autorizzazioni necessarie sul computer Windows e le tue policy lo consentono, ti suggerirei di installare Cygwin ( https://cygwin.com/ ), soprattutto considerando che hai precedenti esperienze con Linux. Cygwin consentirà di gestire le chiavi ssh come su qualsiasi altra macchina Linux / Unix. E fornisce l'accesso a quasi tutti gli strumenti di cli di Linux.


1
È perfettamente ragionevole dare suggerimenti come questo come commenti. Ma poiché la domanda richiede esplicitamente git per Windows, dovresti aspettarti un voto negativo per aver pubblicato questo come risposta.
derubare

0

TortoiseGit consente di specificare la chiave da utilizzare durante la clonazione di un repository. Basta selezionare "Carica chiave Putty" e sfogliare il .ppkfile, come nello screenshot:https://i.stack.imgur.com/lAyzT.png


Se disabilitato, il segno di spunta Settings... -> Network -> SSH clientè impostato suC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
Nikita Bosik

0

Ho risolto il problema sopra creando

~ / .Ssh / config

archiviare e mettere:

IdentityFile C:\Users\adria\.ssh\mysshkey

0

Leggendo il tuo commento alla risposta di Declan, prova prima ad aprire un prompt dei comandi (Start → Eseguicmd ), quindi vai alla cartella git / bin ed esegui ssh-keygen. Teoricamente ciò genererà una chiave RSA e la posizionerà nella directory appropriata. Quindi devi solo trovarlo e condividere la tua chiave pubblica con il mondo.

Il motivo per cui la finestra "lampeggia" è perché Windows esegue il programma e, quando viene eseguito, chiude il prompt dei comandi, pensando di averlo finito, quando hai davvero bisogno dell'output.


0

Usando la v0.17 di Git Gui su Windows ho fatto clic sul seguente comando di menu: AiutoMostra chiave SSH .

Apparve una finestra di dialogo intitolata Your OpenSSH Public Key . Ho generato una chiave e l'ho copiata negli appunti. Quindi ho continuato a seguire le istruzioni setup-ssh su githelp dal terzo passaggio in poi. Successivamente Git Gui ha comunicato silenziosamente con GitHub - non è necessario inserire alcuna credenziale.


0

Sul mio sistema Windows 7 Git Gui cerca la chiave RSA nella userprofile/.sshcartella o più specificamente c:/users/yourusername/.ssh/.

La parte difficile della mia configurazione è stata far accettare la chiave dall'host condiviso in hostmonster. L'unico modo in cui sono riuscito a farlo funzionare è stato usando Git Gui per creare le coppie di chiavi (senza password) e quindi copiare e incollare la chiave pubblica tramite il pannello di controllo, ssh, gestire le chiavi.

Per iniziare dall'inizio, devi creare le chiavi in ​​Git Gui andando nel menu Aiuto , Mostra chiave SSH , quindi Genera chiave . Ora avrai due nuove chiavi nella .sshdirectory. Apri il .pubfile e copia il contenuto.

Accedi al tuo pannello di controllo sull'host condiviso e vai su SSH , Gestisci chiavi SSH e Importa chiave . Incolla nella casella Pubblica e assicurati di nominarlo con il nome giusto senza l'estensione, il mio era id_rsa. Ora è necessario autorizzare la chiave utilizzando il collegamento di gestione dell'autorizzazione, quindi verrà concatenata nel authorized_keysfile.

Ora Git Gui e Git Bash dovrebbero essere in grado di inviare tramite SSH senza digitare la password. Stranamente, sono stato in grado di spingere usando SSH tramite Git Bash e Git Gui bene sui miei server che eseguono Linux, era solo l'hosting condiviso che mi stava dando i giusti. Spero che questo aiuti qualcuno perché mi ci sono volute ore di prove ed errori per arrivare a questo - ed è così semplice!


0

Se stai usando la riga di comando Git per Windows puoi fare come segue:

Apri cmd.exeed esegui setx HOME c:\PATH_TO_PRIVATE_KEY.

Crea una nuova cartella, .ssh(se non esiste) all'interno c:\PATH_TO_PRIVATE_KEYe copia il tuo id_rsafile (la tua chiave privata) al suo interno.

Fatto. Ora puoi usare normalmente la riga di comando Git.


0

La mia esperienza OpenSSL / Bash Git msysgit (non il plink di PuTTY) è che l'ordine di ricerca per la tua .ssh/cartella è il seguente.

  1. %HOME%/.ssh/
  2. %HOMEDRIVE%%HOMEPATH%/.ssh/
  3. %USERPROFILE%/.ssh/

Quindi perché così tante persone suggeriscono di impostare HOMEse uno degli altri non è quello che ti aspetti. Ancora più importante, puoi verificare tu stesso; per eseguire il debug ssh -vsu un server che utilizza l'autenticazione con chiave pubblica come segue:

$ ssh -v git@github.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /d/.ssh/config
...
debug1: identity file /d/.ssh/identity type -1
debug1: identity file /d/.ssh/id_rsa type 1
debug1: identity file /d/.ssh/id_dsa type -1
...
debug1: Next authentication method: publickey
debug1: Trying private key: /d/.ssh/identity
debug1: Offering public key: /d/.ssh/id_rsa
..
Hi kcd83! You've successfully authenticated, but GitHub does not provide shell access.

Abbiamo trovato la sshricerca su un disco oscuro e nessuna delle risposte precedenti sembrava spiegare ciò che abbiamo visto.

A volte %HOMEDRIVE%%HOMEPATH%è un'unità di rete mappata (ad esempio H:/) che causa guasti inutili in caso di problemi di rete / file server, anche quando %USERPROFILE%/.sshsono C:/Users/Username/.sshe hanno le chiavi localmente. L'impostazione %HOME%per %USERPROFILE%interromperla guardando l'unità home remota.


0

È inoltre possibile caricare l'agente PuTTY (concorso) e aggiungere la chiave privata generata con PuTTY per il server.

Git lo riconosce e lo usa per push / pull.


0

Stavo usando TortoiseGit e Git Bash su Windows, a seconda delle necessità. Ho aggiunto tutto in TortoiseGit, e ha funzionato bene, ma Git Bash non lo stava raccogliendo anche se le chiavi erano nella directory corretta. Si scopre che ho dovuto farlo da Git Bash:

ssh-add C:\\Users\\<YOUR_USER>\\.ssh\\id_rsa

Ovviamente puoi cambiare il percorso ovunque si trovi la tua chiave, ricordandoti di usarlo \\come separatore.


0

Se si utilizza Git per Windows, una volta generate le chiavi SSH, è necessario aggiungere la chiave SSH a ssh-agent.

Vedere Generazione di una nuova chiave SSH e aggiunta ad ssh-agent .

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa

Benvenuti in Server Fault. Questa domanda ha già una risposta ampiamente accettata, accettata diversi anni fa. Continua a cercare nuove domande o quelle che possono essere notevolmente migliorate.
Matthew Wetmore,

1
la risposta ampiamente accettata non ha funzionato per me, mentre questa ha funzionato. Credo che potrebbe aiutare qualcuno a sapere che la chiave deve essere aggiunta all'agente ssh e può essere fatta con 2
righe
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.