Utilizzo di git tramite cygwin su Windows 8


16

Ho un'anteprima dello sviluppatore di Windows 8 (non sono sicuro che sia pertinente, ma non ho mai avuto questa seccatura su w7) e sto cercando di clonare un repository git da Github.

Il problema è che il mio ~ / .ssh / id_rsa ha 440 permessi e deve essere 400. Ho provato a cambiarlo, ma le eventuali modifiche ai permessi dell'utente si riflettono nei permessi di gruppo (ad esempio chmod 600 risulta in 660, ecc. ). Questo sembra essere costante in tutti i file nell'intero filesystem.

Ho provato a scherzare con gli ACL ma senza successo (il pieno controllo sul mio utente e negare che tutti abbiano portato a 000)

ecco alcuni output per aiutarti:

$ git clone [removed]
Cloning into [removed]...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/home/john/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/john/.ssh/id_rsa
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None  411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None  407 Nov 30 18:43 known_hosts

$ chmod -v 400 ~/.ssh/id_rsa
mode of `/home/john/.ssh/id_rsa' changed from 0440 (r--r-----) to 0400 (r--------)

$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None  411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None  407 Nov 30 18:43 known_hosts

$ set | grep CYGWIN
CYGWIN='sbmntsec ntsec server ntea'

Mi rendo conto che potrei usare msysgit o qualcosa del genere, ma preferirei poter fare tutto da un singolo terminale

Modifica: Msysgit non funziona neanche per gli stessi motivi


Lo stesso problema qui. Anteprima consumer Windows 8.
Simon Hartcher,

"Ho provato a scherzare con gli ACL ma senza successo (il pieno controllo sul mio utente e negare che tutti abbiano generato 000) " Quindi ls -lmostra i permessi come 000( ----------) - ma sei ancora in grado di leggere il file, fare sshe git clonelamentarti a proposito? Suppongo che sshnon si lamenterà delle autorizzazioni che sembrano troppo rigide. Una rapida occhiata al codice sorgente tende a confermarlo, ma non l'ho provato.
Keith Thompson il

Risposte:


26

Non è necessario un gruppo vuoto.

Durante l'installazione di cygwin tutti i file non appartengono a nessun gruppo. Puoi verificarlo facendo un ls -al. Vedrai che nessun file ("none") è presente nei file. Basta cambiarlo in Utenti:

chgrp Users *

Dopo questo puoi chmodqualunque cosa tu voglia.


chgrp Users *cambierà solo tutti i file e le cartelle in $PWD. Per modificare anche tutte le sottocartelle / file come $ PWD, utilizzare l'opzione -R:chgrp -R users *
adam

4

Ho trovato un trucco specifico di Cygwin per aggirare questo per ora.

Versione breve: è
sufficiente creare un nuovo gruppo di finestre vuoto, utilizzare chgrp per modificare il gruppo di id_rsa in questo, quindi negare le autorizzazioni di lettura / scrittura per il gruppo.

Versione lunga:
premere il tasto super e digitare lusrmgr.msc . Utilizzare questo gestore per creare un gruppo vuoto, chiamato dire EMPTY_GROUP

Ora dobbiamo parlare a Cygwin di questo nuovo gruppo.

mkgroup > /etc/group

Successivamente aggiorniamo il gruppo di id_rsa :

chgrp EMPTY_GROUP ~/.ssh/id_rsa

Infine, trova id_rsa in Esplora risorse e nella scheda Sicurezza in Proprietà, nega le autorizzazioni di lettura / scrittura e dovresti essere pronto .

Non sono sicuro di come Cygwin sia stato in grado di gestirlo in 7 ma non in 8, ma il problema sembra derivare dal gruppo del file id_rsa essendo Nessuno, un gruppo che ha sempre pieno accesso in lettura / scrittura.

Inoltre, questo sembra funzionare solo per ssh.exe fornito con Cygwin, quindi se si desidera utilizzare say ssh con git, sovrascrivere ssh.exe dal bin nell'installazione di git con quello dalla cartella bin nell'installazione di Cywgin .


2

Vinci 8+ Cygwin

Sono su Windows 8, 64 bit. Fare quanto segue per me risolve:

## Start Cygwin shell
cd .ssh
chmod 600 key-file-name

1

In cygwin, digitare questi comandi:

  • Impostare il gruppo corretto sulla cartella principale:

    chgrp -Rv HomeUsers /home

  • Impostare le autorizzazioni corrette per i file di identità ssh:

    chmod 600 -Rv ~/.ssh/id*

NB: la precedente risposta accettata non è aggiornata. Il nome del gruppo è "HomeUsers", non "Users", non può ancora commentare.


1

Vorrei commentare anche questo problema. Ho riscontrato un problema simile sul mio PC Windows 7 utilizzando git tramite Cygwin.

Quando provavo a trasferire le modifiche dal mio repository git locale a un repository remoto (usando un ssh e una coppia di chiavi per l'autenticazione), git lanciava un messaggio che le autorizzazioni 0660 erano troppo aperte per il file

~ / .Ssh / id_rsa.

Naturalmente è corretto che ssh-agent rifiuti questa chiave privata aperta.

Quindi ho provato le cose menzionate in questo thread e in altri thread relativi alla proprietà e al modello rwx del file e della cartella ~ / .ssh

chgrp Users ~/.ssh/*
chmod 400 ~/.ssh/id_rsa

Tuttavia, lo stesso errore è stato ripetuto più volte.

Per qualche motivo era necessario terminare il processo ssh-agent in cygwin ed eseguire il seguente comando nella shell bourne again (bash).

eval `ssh-agent -s`

Non dimenticare di aggiungere l'identità desiderata all'agente ssh, ad es

ssh-add ~/.ssh/id_rsa

Quindi ho ripetuto un comando push valido come

git push origin master

e tutto ha funzionato bene.


0

Per estendere la risposta di Roi Danton . Se hai installato Windows 8 sulla tua vecchia installazione di Windows e la tua precedente directory cygwin è ancora intatta, dovrai prima fare alcune altre cose.

Innanzitutto, prendi la proprietà delle directory / file di Cygwin

Ci saranno alcuni account utente associati alla directory e alle sottodirectory / file che assomigliano S-1-2-34-1234567890-1234567890-1234567890-123

Profili utente

Rimuovi questi e diventa proprietario con il tuo account utente.

  1. Accedi alla Propertiesdirectory di cygwin
  2. Fare clic Advancedsulla Securityscheda
  3. Changeil proprietario per te. È possibile digitare il proprio nome o l'indirizzo e-mail associato
  4. Remove eventuali utenti sconosciuti dall'elenco
  5. Clic Enable Inheritance
  6. Seleziona `Sostituisci tutte le voci di autorizzazione degli oggetti figlio con le voci di autorizzazione ereditabili da questo oggetto
  7. Fare clic OKin basso e quindi Yesnella finestra di dialogo.

Finestra di dialogo Sicurezza di Windows

Quindi, in Cygwin, modifica il gruppo di utenti di tutti i file chiave

Dalla risposta di Roi Danton :

Durante l'installazione di cygwin tutti i file non appartengono a nessun gruppo. Puoi verificarlo facendo un ls -al.

  1. Apri Cygwin e vai alla .sshdirectory -cd ~/.ssh
  2. Esegui chgrp Users *: questo ti consentirà di eseguire chmodcorrettamente i file.
  3. Infine, corri chmod 400 *. 600 funzionerà anche.

Test per vedere se ha funzionato

Semplicemente ssh al tuo server preferito. Nel mio caso, è Bitbucket .

Buon risultato:

$ ssh hg@bitbucket.org
PTY allocation request failed on channel 0
conq: logged in as simonhartcher.

You can use git or hg to connect to Bitbucket. Shell access is disabled.
Connection to bitbucket.org closed.

Risultato negativo:

$ ssh hg@bitbucket.org
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/home/Simon/.ssh/id_dsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/Simon/.ssh/id_dsa
Permission denied (publickey).

2
Con OpenSSH per Windows (non cygwin) ottengo chgrp Users * "C: /opscode/chef/embedded/bin/chgrp.exe": gruppo non valido `Users '
Jonathan

0
  1. id_rsa -> tasto destro del mouse -> Proprietà -> Sicurezza -> Modifica
  2. Rimuovi tutti i gruppi e gli utenti (non premere OK o Applica)
  3. Aggiungi -> Inserisci il nome utente corrente -> Controlla nomi
  4. Consenti "Controllo completo"
  5. Applicare

(Windows 10 Pro)

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.