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
fuente
ls -l
Muestra los permisos como000
(----------
), pero ¿aún puede leer el archivo y hacerssh
ygit clone
quejarse? al respecto? Especulo quessh
no 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.Respuestas:
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:Después de esto puedes hacer
chmod
lo que quieras.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 *
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.
A continuación, actualizamos el grupo de 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 .
fuente
Gana 8 + Cygwin
Estoy en Windows 8, 64 bits. Hacer lo siguiente me lo resuelve:
fuente
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
fuente
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
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
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).
No olvide agregar la identidad deseada al agente ssh, p. Ej.
Luego repetí un comando push válido como
y todo funcionó bien.
fuente
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
Elimine estos y tome posesión de su propia cuenta de usuario.
Properties
directorio cygwinAdvanced
en laSecurity
pestañaChange
El dueño para ti mismo. Puede escribir su nombre o dirección de correo electrónico asociadaRemove
cualquier usuario desconocido de la listaEnable Inheritance
OK
en la parte inferior y luegoYes
al cuadro de diálogo.Luego, en Cygwin, cambie el grupo de usuarios de todos los archivos clave
De la respuesta de Roi Danton :
.ssh
directorio -cd ~/.ssh
chgrp Users *
: esto le permitirá acceder achmod
los archivos correctamente.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:
Mal resultado:
fuente
chgrp Users *
"C: /opscode/chef/embedded/bin/chgrp.exe": grupo no válido `Usuarios '(Windows 10 Pro)
fuente