it-swarm-eu.dev

Le chiavi di chiave privata SSH che si rivolgono a una Git GUI o ssh-keygen sono troppo aperte

Recentemente non sono riuscito a clonare o Push to github e sto cercando di trovare la causa principale.

Questo è su Windows

Ho cygwin + git e msysgit.

Msysgit è stato installato con le seguenti opzioni:

  • OpenSSH
  • Usa Git dal prompt dei comandi di Windows

Questo mi dà 4 ambienti per provare a usare git in:

  • Windows cmd Prompt
  • PowerShell
  • Git Bash
  • Cygwin

In qualche modo sono riuscito a mettermi in una posizione in cui quando provo a clonare un repository usando msysgit, cmd.exe o Powershell, ottengo il seguente errore:

> Initialized empty Git repository in
> C:/sandbox/SomeProject/.git/
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @    WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions 0644 for
> '/c/Users/Ben/.ssh/id_rsa' are too
> open. It is recommended that your
> private key files are NOT accessible
> by others. This private key will be
> ignored. bad permissions: ignore key:
> /c/Users/Ben/.ssh/id_rsa Permission
> denied (publickey). fatal: The remote
> end hung up unexpectedly

Questo sta usando la cartella .ssh nella mia cartella c:\users\ben \, che è quella che viene usata da msysgit. Sospetto che cygwin funzioni perché la cartella .ssh si trova altrove, ma non sono sicuro del perché

In Git Bash, controllo le autorizzazioni:

$ ls -l -a ~/.ssh

Il che mi dà:

drwxr-xr-x    2 Ben      Administ        0 Oct 12 13:09 .    
drwxr-xr-x   34 Ben      Administ     8192 Oct 12 13:15 ..    
-rw-r--r--    1 Ben      Administ     1743 Oct 12 12:36 id_rsa
-rw-r--r--    1 Ben      Administ      399 Oct 12 12:36 id_rsa.pub    
-rw-r--r--    1 Ben      Administ      407 Oct 12 13:09 known_hosts

Queste autorizzazioni sono apparentemente troppo rilassate. Come sono arrivati ​​in questo modo, non ne ho idea.

Posso provare a cambiarli ...

$ chmod -v -R 600 ~/.ssh

che mi dice:

mode of `.ssh' changed to 0600 (rw-------)
mode of `.ssh/id_rsa' changed to 0600 (rw-------)
mode of `.ssh/id_rsa.pub' changed to 0600 (rw-------)
mode of `.ssh/known_hosts' changed to 0600 (rw-------)

Ma sembra non avere alcun effetto. Ho ancora lo stesso errore e sto facendo

$ ls -l -a ~/.ssh

produce le stesse autorizzazioni di prima.

UPDATE:

Ho provato a correggere i permessi su quei file in cygwin, e cygwin segnala correttamente i permessi, gitbash no: alt text http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924. jpg

Qualche idea su come posso davvero aggiustare queste autorizzazioni?

240
Ben Scheirman

Hai cambiato le autorizzazioni sull'intera directory, che sono d'accordo con Splash è una cattiva idea. Se riesci a ricordare quali sono i permessi originali per la directory, proverei a reimpostarli e quindi fare quanto segue

cd ~/.ssh
chmod 700 id_rsa

all'interno della cartella .ssh. Ciò imposterà il file id_rsa in rwx (read, write, execute) solo per il proprietario (tu) e zero access per tutti gli altri.

Se non riesci a ricordare quali sono le impostazioni originali, aggiungi un nuovo utente e crea un set di chiavi SSH per quell'utente, creando così una nuova cartella .ssh che avrà le autorizzazioni predefinite. Puoi utilizzare la nuova cartella .ssh come riferimento per le autorizzazioni per reimpostare la cartella e i file .ssh.

Se ciò non funziona, proverei a disinstallare msysgit, eliminare TUTTE le cartelle .ssh sul computer (solo per sicurezza), quindi reinstallare msysgit con le impostazioni desiderate e provare a ricominciare completamente (anche se penso che tu mi abbia detto hai già provato questo).

Modificato: anche trovato questo collegamento via Google - Riparazione "ATTENZIONE: FILE PRIVATO PRIVATO NON PROTETTO!" su Linux Sebbene sia indirizzato a Linux, potrebbe essere d'aiuto dato che stiamo parlando di permessi liunx e simili.

356
Koby

C'è un bug con chmod di cygwin, fare riferimento a:

https://superuser.com/questions/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected

chgrp -Rv Users ~/.ssh/* 
chmod -vR 600 ~/.ssh/id_rsa
74
kittikun

Per i sistemi * nix, la correzione ovvia è chmod 600 id_rsa ofc, ma su Windows 7 ho dovuto sbattere la testa contro il muro per un po ', ma poi ho trovato la soluzione magica:

andare su Risorse del computer/Fare clic destro/Proprietà/Impostazioni di sistema avanzate/Variabili di ambiente e ELIMINARE la variabile (possibilmente dal sistema e dall'ambiente utente):

CYGWIN

Fondamentalmente, è un difetto in mingw32 usato da git windows binary, vedendo tutti i file 644 e tutte le cartelle 755 sempre. La rimozione della variabile di ambiente non modifica questo comportamento, ma sembra ssh.exe che sembri ignorare il problema. Se imposti le autorizzazioni appropriate al tuo id_rsa attraverso le impostazioni di sicurezza di esploratori (non c'è davvero bisogno di avere altri utenti là dentro che il tuo, non "tutti", non "amministratori", non "sistema". , sarai comunque al sicuro.

Ora, perché mingw32, un sistema diverso da cygwin, renderebbe qualsiasi uso della variabile d'ambiente CYGWIN , è oltre me. Sembra un insetto per me.

17

Sono su XP e questo ha permesso a Git Bash di comunicare con Github (dopo molta frustrazione):

  1. copia c:\cygwin\bin\cyg* (~ 50 file) in c:\Program Files\Git\bin\
  2. copia c:\cygwin\bin\ssh.exe in c:\Program Files\Git\bin\ (sovrascrittura)
  3. Crea il file c:\Documents and Settings\<username>\.ssh\config contenente:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"
    
  4. (facoltativo) Utilizzare ssh -v [email protected] per vedere la connessione debug.

  5. Prova una spinta!

Background: il problema generale è una combinazione di questi due:

  • ERRORE: mingw32 vede tutti i file come 644 (altri/leggibili dal gruppo), e nulla di ciò che ho provato in mingw32, cygwin o Windows potrebbe risolvere il problema.
  • la versione SSH di mingw32 non lo consentirà per le chiavi private (generalmente una buona politica in un server).
13
Steve Clay

Per Windows 7 utilizzando il Git trovato qui (utilizza MinGW, non Cygwin):

  1. In Windows Explorer, fare clic con il tasto destro del mouse sul file id_rsa e selezionare Proprietà
  2. Seleziona la scheda Sicurezza e fai clic su Modifica ...
  3. Seleziona la casella Nega accanto a Controllo completo per tutti i gruppi ECCEZIONE degli amministratori
  4. Riprovare il comando Git
10
Brett Pennings

Cambiare i permessi dei file da Proprietà, disabilitare l'ereditarietà ed eseguire chmod 400 non ha funzionato per me. Le autorizzazioni per il mio file di chiave privata erano:

-r - r ----- 1 alex Nessuno 1766 8 marzo 13:04 /home/alex/.ssh/id_rsa

Poi ho notato che il gruppo era None, quindi ho appena eseguito

chown alex: amministratori ~/.ssh/id_rsa

Quindi potrei cambiare i permessi con chmod 400 ed eseguire un push git.

6
alex.m

OK, ecco come ho effettivamente forzato la modifica sui miei file di Windows riguardo le autorizzazioni stesse su Win7: Trova la tua chiave ssh in Windows Explorer: C:\Users [your_user_name_here] .ssh\id_rsa

Fare clic con il tasto destro del mouse sul file> Proprietà> scheda Sicurezza> pulsante Avanzate> Modifica autorizzazioni

Ora rimuovi tutti quelli che in realtà non sono il tuo nome utente. Questo include l'amministratore e gli utenti di sistema. A questo punto potresti ottenere un dialogo sull'assegnazione delle autorizzazioni, scegliere l'opzione che NON eredita, dal momento che vogliamo solo modificare questo file.

Fare clic su OK e salvare fino al completamento.

Ho combattuto con questo per giorni perché la mia finestra non avrebbe cambiato i permessi dei file dalla riga di comando. In questo modo è anche REALMENTE fatto- invece di usare eccitanti work around che possono avere conseguenze strane.

4
diannaL

PER UTENTI MAC:

Cambia le impostazioni del tuo file di chiavi digitando questo nel terminale:

chmod og-r *filename.pem*

(assicurati di essere nella directory corretta, o il nome file del percorso nel comando correttamente).

4
Andrew

Lo risolvo correndo:

chmod 400 ~/.ssh/id_rsa

Spero di aiutare. In bocca al lupo.

3

Ho avuto lo stesso problema su Windows XP solo di recente. Ho provato a chmod 700 sul mio file ~/.ssh/id_rsa ma non sembra funzionare. Quando ho dato un'occhiata alle autorizzazioni usando ls -l su ~/.ssh/id_rsa ho potuto vedere che le mie autorizzazioni effettive erano ancora 644.

Poi ho ricordato che i permessi di Windows ereditano anche le autorizzazioni dalle cartelle e la cartella era ancora aperta a tutti. Una soluzione potrebbe essere quella di impostare le autorizzazioni per la cartella, ma penso che un modo migliore sarebbe quello di dire al sistema di ignorare l'ereditarietà per questo file. Questo può essere fatto usando l'opzione avanzata nella scheda sicurezza nelle proprietà del file e deselezionando "eredita da permessi genitore ..."

Questo potrebbe essere utile per gli altri con lo stesso problema.

2
daramarak

Dopo aver affrontato il problema di recente e questo è uno dei migliori risultati di google, ho pensato che avrei fatto il chip con un semplice lavoro in giro documentato nella discussione qui: http://code.google.com/ ? p/msysgit/temi/dettaglio id = 261 # C40

Semplicemente implica la sovrascrittura di mysys ssh.exe con cygwin ssh.exe

2
chriskhan

Sono stato in grado di risolvere questo problema facendo due cose, anche se potresti non dover fare il passaggio 1.

  1. copia da cygwin ssh.exe e tutti i cyg * .dll nella directory bin di Git (questo potrebbe non essere necessario ma è un passo che ho fatto ma questo da solo non ha risolto le cose)

  2. seguire i passaggi da: http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem/

    Ho aggiunto alcuni dettagli al mio file ~/.ssh/config:

Ospita heroku.com
Nome host heroku.com
Porta 22
IdentitàSolo sì
IdentityFile ~/.ssh/id_heroku
TCPKeepAlive si
Brandon utente

Ho dovuto usare User come mio indirizzo email per heroku.com Nota: questo significa che devi creare una chiave, l'ho seguita per creare la chiave e quando viene richiesto il nome della chiave, assicurati di specificare id_heroku http://help.github.com/win-set-up-git/

  1. quindi aggiungi la chiave:
    chiavi heroku: aggiungi ~/.ssh/id_heroku.pub
1
Christy Hotney

Qual è stato il trucco per me per aggiornare CYGWIN variabile di ambiente con: " tty nodosfilewarning ". Non avevo nemmeno bisogno di chmod la chiave.

1
tohokami

Questo è un problema particolarmente complicato su Windows, in cui non è sufficiente solo eseguire il chmod dei file correttamente. Devi impostare il tuo ambiente.

Su Windows, questo ha funzionato per me:

  1. Installa Cygwin.

  2. Sostituisci msysgit ssh.exe con ssh.exe di cygwin.

  3. Usando cygwin bash, chmod 600 il file della chiave privata, che era "id_rsa" per me.

  4. Se continua a non funzionare, vai su Pannello di controllo -> Proprietà del sistema -> Avanzate -> Variabili d'ambiente e aggiungi la seguente variabile d'ambiente. Quindi ripetere il passaggio 3.

    Valore variabile
    CYGWIN sbmntsec

1

Sto giocando in questo momento con Git 1.6.5 e non riesco a replicare la tua configurazione:

[email protected] /k/git
$ ll ~/.ssh
total 8
drwxr-xr-x    2 Administ Administ     4096 Oct 13 22:04 ./
drwxr-xr-x    6 Administ Administ     4096 Oct  6 21:36 ../
-rw-r--r--    1 Administ Administ        0 Oct 13 22:04 c.txt
-rw-r--r--    1 Administ Administ      403 Sep 30 22:36 config_disabled
-rw-r--r--    1 Administ Administ      887 Aug 30 16:33 id_rsa
-rw-r--r--    1 Administ Administ      226 Aug 30 16:34 id_rsa.pub
-rw-r--r--    1 Administ Administ      843 Aug 30 16:32 id_rsa_PuTTY.ppk
-rw-r--r--    1 Administ Administ      294 Aug 30 16:33 id_rsa_PuTTY.pub
-rw-r--r--    1 Administ Administ     1626 Sep 30 22:49 known_hosts

[email protected] /k/git
$ git clone [email protected]:alexandrul/gitbook.git
Initialized empty Git repository in k:/git/gitbook/.git/
remote: Counting objects: 1152, done.
remote: Compressing objects: 100% (625/625), done.
remote: Total 1152 (delta 438), reused 1056 (delta 383)s
Receiving objects: 100% (1152/1152), 1.31 MiB | 78 KiB/s, done.
Resolving deltas: 100% (438/438), done.

[email protected] /k/git
$ ssh [email protected]
ERROR: Hi alexandrul! You've successfully authenticated, but GitHub does not pro
vide Shell access
Connection to github.com closed.

$ ssh -v
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007

chmod non modifica neanche i permessi dei file per le mie chiavi.

Ambiente:

  • Windows Server 2008 SP2 su NTFS
  • utente: amministratore
  • vars ambiente:
    • PLINK_PROTOCOL = ssh
    • HOME =/c/profili/home

Aggiornamento: Git 1.6.5.1 funziona pure.

1
alexandrul

Digitare sul terminale:

chmod -Rf 700 ~/.ssh/

E prova ancora.

0

@ La risposta di Koby non funziona per me, quindi faccio un piccolo cambiamento.

cd ~/.ssh
chmod 700 id_rsa.pub

Questo funziona bene per me su Mac.

0
Han Pengbo

A meno che non ci sia un motivo per cui vuoi mantenere quella coppia di chiavi privata/pubblica (id_rsa/id_rsa.pub), o divertirti a sbattere la testa contro il muro, ti consiglio di ricrearli e aggiornare la tua chiave pubblica su github.

Inizia facendo una copia di backup della tua directory ~/.ssh.

Immettere quanto segue e rispondere "y" a se si desidera sovrascrivere i file esistenti.

ssh-keygen -t rsa

Copia il contenuto della chiave pubblica negli appunti. (Di seguito è come dovresti farlo su un Mac).

cat ~/.ssh/id_rsa.pub | pbcopy

Vai al tuo account su github e aggiungi questa chiave.

Name: My new public key
Key: <PASTE>

Esci dal tuo terminale e riavvia uno nuovo.

Se ricevi messaggi di errore privi di significato come "Inserisci la tua password" per la tua chiave pubblica quando non ne hai mai inserito uno, considera questa tecnica di avvio. Come vedi sopra, non è complicato.

0
l3x

Hai copiato il file chiave da un'altra macchina?

Ho appena creato un file id_rsa sul computer client, quindi ho incollato la chiave che volevo. Nessun problema con le autorizzazioni. Niente da impostare. Ha funzionato. Funziona anche se usi PuTTYgen per creare la chiave privata.

Forse qualche problema di gruppo nascosto se lo stai copiando da un'altra macchina.

Testato su due computer Windows 8.1. Uso di Sublime Text 3 per copiare e incollare la chiave privata. Utilizzo di Git Bash (Git-1.9.4-preview20140611).

0
PhilT

Non una risposta diretta alla domanda principale, ma alla tua domanda su come funziona la cartella di cygwin ... Come regola generale, cygwin colloca tutti i "tuoi" file sotto equiv di c:\cygwin\home\username. Tratta la cartella per qualsiasi impostazione specifica dell'utente piuttosto che per la directory utente di Windows.

0
J Wynia

Ho avuto lo stesso problema su Windows 10 in cui ho provato a SSH in una scatola di Vagrant. Questo sembra un bug nella vecchia versione di OpenSSH. Cosa ha funzionato per me:

  1. Installa l'ultimo OpenSSH da http://www.mls-software.com/opensshd.html
  2. where.exe ssh

(Notare ".exe" se si utilizza Powershell)

Potresti vedere qualcosa come:

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\OpenSSH\bin\ssh.exe
C:\opscode\chefdk\embedded\git\usr\bin\ssh.exe

Si noti che nell'esempio precedente l'ultimo OpenSSH è il secondo nel percorso, quindi non verrà eseguito.

Per cambiare l'ordine:

  1. Fai clic con il pulsante destro del mouse sul pulsante Windows -> Impostazioni -> "Modifica le variabili dell'ambiente di sistema"
  2. Nella scheda "Avanzate" fai clic su "Variabili d'ambiente ..."
  3. Sotto Variabili di sistema, modifica "Percorso".
  4. Seleziona "C:\Programmi\OpenSSH\bin" e "Sposta su" in modo che appaia in alto.
  5. Clicca OK
  6. Riavviare la console in modo che possano essere applicate le nuove variabili di ambiente.
0
Jasper Citi

Dopo aver aggiornato l'installazione di Cygwin a una versione di febbraio 2015 (1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin), mi sono imbattuto improvvisamente nell'avviso UNPROTECTED PRIVATE KEY FILE.

Ho risolto questo problema dopo aver eseguito il seguente comando:

setfacl -s u::rw-,g::---,o:--- ~/.ssh/id_rsa

( un'altra risposta ad un'altra domanda dà più contesto)

0
Abdull

Non sono mai riuscito a far funzionare Git completamente in Powershell. Ma nel git bash Shell non ho avuto alcun problema relativo ai permessi, e non ho avuto bisogno di impostare chmod ecc ... Dopo aver aggiunto ssh a Github, ero attivo e funzionante.

0
Sam Kenny