Usando git a través de cygwin en windows 8

16

Tengo una vista previa de desarrollo de Windows 8 (no estoy seguro si es relevante, pero nunca tuve esta molestia en w7) y estoy tratando de clonar un repositorio git de github.

El problema es que mi ~ / .ssh / id_rsa tiene 440 permisos y necesita ser 400. He intentado cambiarlo pero los cambios en los permisos del usuario se reflejan en los permisos del grupo (es decir, el resultado de chmod 600 es 660, etc. ) Esto parece ser constante en cualquier archivo en todo el sistema de archivos.

He intentado jugar con las ACL, pero fue en vano (el control total de mi usuario y negarlo a todos resultó en 000)

Aquí hay algunas salidas para ayudar:

$ 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'

Me doy cuenta de que podría usar msysgit o algo así, pero preferiría poder hacer todo desde una sola terminal

Editar: Msysgit tampoco funciona por las mismas razones

9punto6
fuente
Mismo problema aquí. Windows 8 Consumer Preview.
Simon Hartcher
"He intentado jugar con las ACL, pero fue en vano (el control total de mi usuario y negar que todos obtuvieran 000) " ls -lMuestra los permisos como 000( ----------), pero ¿aún puede leer el archivo y hacer sshy git clonequejarse? al respecto? Especulo que sshno se quejarán de los permisos que parecen ser demasiado estrictos. Un vistazo rápido al código fuente tiende a confirmar esto, pero no lo he probado.
Keith Thompson

Respuestas:

26

No hay necesidad de un grupo vacío.

Durante la instalación de cygwin, todos los archivos no pertenecen a ningún grupo. Puede verificar esto haciendo un ls -al. Verá que ningún grupo ("ninguno") está en los archivos. Simplemente cámbielo a Usuarios:

chgrp Users *

Después de esto puedes hacer chmodlo que quieras.

Roi Danton
fuente
chgrp Users *solo cambiará todos los archivos y carpetas $PWD. Para cambiar todas las subcarpetas / archivos como wellas $ PWD, use la opción -R:chgrp -R users *
adam
4

He encontrado un truco específico de Cygwin para solucionar esto por ahora.

Versión corta:
simplemente cree un nuevo grupo de ventanas vacío, use chgrp para cambiar el grupo de id_rsa a esto, y luego niegue los permisos de lectura / escritura para el grupo.

Versión larga: presione la
tecla súper y escriba lusrmgr.msc . Use este administrador para crear un grupo vacío, llamado say EMPTY_GROUP

Ahora tenemos que contarle a Cygwin sobre este nuevo grupo.

mkgroup > /etc/group

A continuación, actualizamos el grupo de id_rsa :

chgrp EMPTY_GROUP ~/.ssh/id_rsa

Finalmente, busque id_rsa en el Explorador de Windows y, en la pestaña Seguridad en Propiedades, niegue los permisos de lectura / escritura, y debería estar listo.

No estoy seguro de cómo Cygwin pudo manejar esto en 7 pero no en 8, pero el problema parece derivarse del grupo del archivo id_rsa que es Ninguno, un grupo que siempre tiene acceso completo de lectura / escritura.

Además, esto parece funcionar solo para el ssh.exe que viene con Cygwin, por lo que si desea usar say ssh con git, sobrescriba el ssh.exe de bin en su instalación de git con el de la carpeta bin en su instalación de Cywgin .

Daniel Stiner
fuente
2

Gana 8 + Cygwin

Estoy en Windows 8, 64 bits. Hacer lo siguiente me lo resuelve:

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

En cygwin, escriba estos comandos:

  • Establezca el grupo correcto en la carpeta de inicio:

    chgrp -Rv HomeUsers /home

  • Establezca los permisos correctos para los archivos de identidad ssh:

    chmod 600 -Rv ~/.ssh/id*

NB: la respuesta aceptada anterior está desactualizada. El nombre del grupo es "Usuarios Domiciliarios", no "Usuarios", no puede comentar aún

Julien Ricard
fuente
1

Me gustaría comentar sobre ese tema también. Encontré un problema similar en mi PC con Windows 7 usando git a través de Cygwin.

Al intentar enviar cambios desde mi repositorio git local a un repositorio remoto (usando un ssh y un par de claves para la autenticación), git lanzó un mensaje de que los permisos 0660 estaban demasiado abiertos para el archivo

~ / .ssh / id_rsa.

Por supuesto, está bien que el agente ssh rechace esta clave privada abierta.

Así que probé las cosas mencionadas en este hilo y otros hilos relacionados con la propiedad y el patrón rwx del archivo y la carpeta ~ / .ssh

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

Sin embargo, el mismo error fue lanzado una y otra vez.

Por alguna razón, fue necesario eliminar el proceso ssh-agent en cygwin y ejecutar el siguiente comando en el shell bourne again (bash).

eval `ssh-agent -s`

No olvide agregar la identidad deseada al agente ssh, p. Ej.

ssh-add ~/.ssh/id_rsa

Luego repetí un comando push válido como

git push origin master

y todo funcionó bien.

MichaelHuelsen
fuente
0

Para extender la respuesta de Roi Danton . Si ha instalado Windows 8 sobre su antigua instalación de Windows y su directorio anterior de cygwin todavía está intacto, primero deberá hacer algunas otras cosas.

Primero, tome posesión de los directorios / archivos de Cygwin

Habrá algunas cuentas de usuario asociadas con el directorio y subdirectorios / archivos que se parecen a S-1-2-34-1234567890-1234567890-1234567890-123

Cuentas de usuario

Elimine estos y tome posesión de su propia cuenta de usuario.

  1. Acceda al Propertiesdirectorio cygwin
  2. Click Advanceden la Securitypestaña
  3. ChangeEl dueño para ti mismo. Puede escribir su nombre o dirección de correo electrónico asociada
  4. Remove cualquier usuario desconocido de la lista
  5. Hacer clic Enable Inheritance
  6. Marque `Reemplazar todas las entradas de permisos de objetos secundarios con entradas de permisos heredables de este objeto
  7. Haga clic OKen la parte inferior y luego Yesal cuadro de diálogo.

Cuadro de diálogo de seguridad de Windows

Luego, en Cygwin, cambie el grupo de usuarios de todos los archivos clave

De la respuesta de Roi Danton :

Durante la instalación de cygwin, todos los archivos no pertenecen a ningún grupo. Puede verificar esto haciendo un ls -al.

  1. Abra Cygwin y navegue al .sshdirectorio -cd ~/.ssh
  2. Ejecutar chgrp Users *: esto le permitirá acceder a chmodlos archivos correctamente.
  3. Finalmente, corre chmod 400 *. 600 también funcionarán.

Prueba para ver si funcionó

Simplemente ssh a su servidor de elección. En mi caso, es Bitbucket .

Buen resultado:

$ ssh [email protected]
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.

Mal resultado:

$ ssh [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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).
Simon Hartcher
fuente
2
Con OpenSSH para Windows (no cygwin) obtengo chgrp Users * "C: /opscode/chef/embedded/bin/chgrp.exe": grupo no válido `Usuarios '
Jonathan
0
  1. id_rsa -> Haga clic derecho -> Propiedades -> Seguridad -> Editar
  2. Eliminar todos los grupos y usuarios (no presione Aceptar o Aplicar)
  3. Agregar -> Ingrese su nombre de usuario actual -> Verificar nombres
  4. Permitir "Control total"
  5. Aplicar

(Windows 10 Pro)

optimiertes
fuente