Pregunta

Recientemente no he podido clonar ni enviar a github y estoy intentando encontrar la causa raíz.

esto esta en windows

Tengo cygwin + git y msysgit.

Msysgit se instaló con las siguientes opciones:

  • AbiertoSSH
  • Utilice Git desde el símbolo del sistema de Windows

Eso me da 4 entornos para intentar usar git en:

  • Indicador de cmd de Windows
  • Potencia Shell
  • Git bash
  • Cygwin

De alguna manera logré llegar a una posición en la que cuando intento clonar un repositorio usando msysgit, cmd.exe o Powershell, aparece el siguiente error:

> 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

Esto está usando la carpeta .ssh en mi carpeta c:\users\ben\, que es la que usa msysgit. Sospecho que cygwin funciona porque la carpeta .ssh se encuentra en otro lugar, pero no estoy seguro de por qué

En Git Bash, compruebo los permisos:

$ ls -l -a ~/.ssh

Lo que me da:

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

Estos permisos aparentemente son demasiado relajados.Cómo llegaron a este punto, no tengo idea.

Puedo intentar cambiarlos...

$ chmod -v -R 600 ~/.ssh

que me 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-------)

Pero parece no tener ningún efecto.Sigo recibiendo el mismo error y haciendo

$ ls -l -a ~/.ssh

produce los mismos permisos que antes.

ACTUALIZAR:

Intenté arreglar los permisos de esos archivos en cygwin, y cygwin informa sus permisos correctamente, gitbash no:texto alternativo http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

¿Alguna idea sobre cómo puedo arreglar realmente estos permisos?

¿Fue útil?

Solución

Ha cambiado los permisos en todo el directorio, que estoy de acuerdo con Splash es una mala idea. Si usted puede recordar lo que los permisos originales para el directorio son, me gustaría tratar de ponerlos de nuevo a eso y luego hacer lo siguiente

cd ~/.ssh
chmod 700 id_rsa

dentro de la carpeta .ssh. Eso va a establecer el archivo id_rsa a rwx (leer, escribir, ejecutar) para el propietario (usted) solamente, y acceso a cero para todos los demás.

Si no puede recordar lo que los valores originales son, añadir un nuevo usuario y crear un conjunto de claves SSH para ese usuario, creando así una nueva carpeta .ssh que tendrá permisos predeterminados. Puede utilizar esa nueva carpeta .ssh como la referencia para los permisos para restablecer la carpeta .ssh y archivos.

Si eso no funciona, me gustaría tratar de hacer una desinstalación de msysgit, eliminar todo .ssh carpetas en el ordenador (sólo para medida de seguridad), y luego volver a instalar msysgit con los ajustes deseados y tratar de empezar de nuevo por completo (aunque creo usted me dijo que ha intentado esto ya).

Editado: También acabo de encontrar este enlace a través de Google - fijación "ADVERTENCIA: DESPROTEGIDO archivo de clave privada!" en Linux Mientras se dirige a Linux, podría ser útil ya que estamos hablando permisos liunx y tal.

Otros consejos

Hay un error con chmod de cygwin, consulte:

https: // superusuario .com / preguntas / 397288 / Uso-cygwin-en-windows-8-chmod-600-hace-no-trabajo-como la esperada

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

Para los sistemas * nix, la solución obvia es OFC chmod 600 id_rsa, pero en Windows 7 tenía que golpear la cabeza contra la pared por un tiempo, pero luego me encontré con la solución mágica:

vaya a Mi PC / Click derecho / Propiedades / Configuración avanzada del sistema / Variables de entorno y Eliminar la variable (posiblemente desde el sistema y el entorno del usuario):

CYGWIN

Básicamente, es una falla en mingw32 utilizado por Windows git binarios, ver todos los archivos y todas las carpetas 644 755 siempre. Extracción de la variable de entorno no cambia ese comportamiento, pero appearantly ssh.exe dice ignorar el problema. Si establece permisos adecuados para su id_rsa través de la configuración de seguridad exploradores (que realmente no hay necesidad de tener cualquier otro usuario de ahí que no sea su propia, no "todo el mundo", no "administradores", no "Sistema". Ninguno. Sólo te) , usted todavía será seguro.

Ahora, ¿por qué mingw32, un sistema diferente que cygwin, haría que cualquier uso de la variable de entorno CYGWIN, está más allá de mí. Parece un error para mí.

Estoy en XP y esto permitió Git Bash para comunicarse w / Github (después de mucha frustración):

  1. c:\cygwin\bin\cyg* copia (~ 50 archivos) a c:\Program Files\Git\bin\
  2. copia c:\cygwin\bin\ssh.exe a c:\Program Files\Git\bin\ (sobrescribir)
  3. Crea el c:\Documents and Settings\<username>\.ssh\config archivo que contiene:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"
    
  4. (opcional) Utilice ssh -v git@github ver la conexión depurado.

  5. Intente un empujón!

Antecedentes: El problema general es una combinación de estos dos:

  • ERROR: mingw32 ve todos los archivos como 644 (sí / grupo legible), y nada he intentado en mingw32, cygwin o Windows podría solucionarlo
  • .
  • SSH versión de mingw32 no permitirá que para las claves privadas (por lo general una buena política en el servidor).

Para Windows 7 utilizando el Git encontró href="http://help.github.com/win-set-up-git/" aquí (utiliza MinGW, no Cygwin):

  1. En el explorador de Windows, haga clic en el archivo y seleccione Propiedades id_rsa
  2. Seleccione la pestaña Seguridad y haga clic en Editar ...
  3. Marque la casilla Denegar junto a Control total para todos los grupos, excepto los administradores
  4. Vuelve a probar el comando Git

Cambiar permisos de archivo de propiedades, la desactivación de la herencia y con chmod 400 no funcionó para mí. Los permisos para mi archivo de clave privada fueron los siguientes:

  

-r - r ----- 1 Alex Ninguno 1766 Mar 8 13:04 /home/alex/.ssh/id_rsa

Entonces me di cuenta de que el grupo estaba Ninguno, por lo que acaba de ejecutar

  

chown Alex: Los administradores ~ / .ssh / id_rsa

Entonces podría cambiar con éxito los permisos con chmod 400, y ejecutar un git push.

Para usuarios de Mac:

Cambiar la configuración de tu archivo de par de claves escribiendo esto en el terminal:

chmod og-r *filename.pem*

(asegúrese de que está en el directorio correcto, o nombre de archivo ruta en el comando correctamente).

Bueno, pues así es como yo en realidad forzado el cambio en mis archivos de Windows con respecto a los permisos propios de Win7: Encuentra su clave ssh en Windows Explorer: C: \ Users [tu_nombre_de_usuario_aquí] .ssh \ id_rsa

Haga clic en el archivo> pestaña Propiedades> Seguridad> botón Opciones avanzadas> Cambiar permisos

Ahora quite todo el mundo que no es en realidad su nombre de usuario. Esto incluye a los usuarios del administrador y del sistema. En este punto se puede conseguir un diálogo sobre la herencia de permissions- elegir la opción que NO inherit- ya que sólo queremos cambiar este archivo.

Haga clic en Aceptar y guarde hasta que se haga.

He luchado con esto durante días porque mis ventanas no se podía cambiar los permisos de archivo desde la línea de comandos. De esta manera también se hecho- REALMENTE en lugar de utilizar arounds de trabajo interesantes que hacer que puede tener consecuencias impares.

lo resuelvo ejecutando:

chmod 400 ~/.ssh/id_rsa

Espero ayudar. Buena suerte.

Después de comming a través del problema recientemente y siendo este uno de los primeros resultados de Google pensé que iba a hacer mella en un trabajo sencillo alrededor documentado en la discusión aquí: http://code.google.com/p/msysgit/issues/detail?id=261#c40

Simplemente consiste en sobrescribir los mysys ssh.exe con su cygwin ssh.exe

Yo tenía el mismo problema en Windows XP hace poco. Probé a chmod 700 en mi archivo ~ / .ssh / id_rsa pero no parece funcionar. Cuando tuve un vistazo a los permisos usando ls -l en el ~ / .ssh / id_rsa pude ver que mis permisos efectivos todavía era 644.

Entonces recordé que los permisos de Windows también heredan los permisos de las carpetas y la carpeta todavía estaba abierta a todo el mundo. Una solución podría ser el establecimiento de permisos para la carpeta, así, pero creo que una mejor manera sería la de indicar al sistema que ignore la herencia para este archivo. Esto se puede hacer usando la opción avanzada en la pestaña de seguridad en las propiedades del archivo, y desmarcando "heredan de los permisos de los padres ..."

Esto podría ser útil para otras personas con el mismo problema.

Estoy jugando ahora con Git 1.6.5, y no puedo replicar su configuración:

Administrator@WS2008 /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

Administrator@WS2008 /k/git
$ git clone git@github.com: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.

Administrator@WS2008 /k/git
$ ssh git@github.com
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 no modifica los permisos de archivo para las llaves de mi tampoco.

Medio ambiente:

  • Windows Server 2008 SP2 en NTFS
  • usuario: administrador
  • El entorno de Vars:
    • PLINK_PROTOCOL = ssh
    • HOME = / c / perfiles / home

Actualización:. Git 1.6.5.1 funciona tan bien

Este es un problema particularmente complicado en Windows, donde no basta con modificar los archivos correctamente.Tienes que configurar tu entorno.

En Windows, esto funcionó para mí:

  1. Instale cygwin.

  2. Reemplace msysgit ssh.exe con ssh.exe de cygwin.

  3. Usando cygwin bash, haga chmod 600 en el archivo de clave privada, que para mí era "id_rsa".

  4. Si aún no funciona, vaya al Panel de control -> Propiedades del sistema -> Avanzado -> Variables de entorno y agregue la siguiente variable de entorno.Luego repita el paso 3.

    Valor variable
    CYGWIN     sbmntsec

Yo era capaz de solucionar este problema haciendo dos cosas, aunque es posible que no tenga que hacer el paso 1.

  1. copia de ssh.exe cygwin y todos cyg * .dll en el directorio bin de Git (esto puede no ser necesario, pero es un paso que daba, pero esto por sí solo no arregló las cosas)

  2. siga los pasos de: http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem/

    He añadido algunos detalles de mi archivo ~ / .ssh / config:

Host heroku.com
Nombre de host heroku.com
El puerto 22
IdentitiesOnly sí
IdentityFile ~ / .ssh / id_heroku
TCPKeepAlive sí
Brandon usuario

he tenido que usar usuario que mi dirección de correo electrónico para heroku.com Nota: esto significa que necesita para crear una clave, he seguido este para crear la clave y cuando se pide el nombre de la clave, asegúrese de especificar id_heroku http://help.github.com/win-set-up-git/

  1. a continuación, añadir la clave:
    Heroku claves: añadir ~ / .ssh / id_heroku.pub

Lo que hizo el truco para mí fue actualizar variables CYGWIN con el medio ambiente: " TTY nodosfilewarning ". Ni siquiera necesita chmod la clave.

No es una respuesta directa a la pregunta principal, pero en su pregunta de cómo funciona la carpeta de cygwin ... Como regla general, cygwin pone todos "sus" archivos bajo el equivalente de c: \ cygwin \ home \ nombre de usuario. Se trata de que la carpeta de las configuraciones específicas del usuario en lugar de la guía de usuario de Windows.

A menos que haya una razón que desea mantener ese par de clave privada / pública (id_rsa / id_rsa.pub), o disfrutar de golpearse la cabeza contra la pared, me gustaría recomendar simplemente volver a crearlos y actualizar su clave pública en github .

Comience por hacer una copia de seguridad del directorio ~ / .ssh.

Entre el siguiente y responder "y" para si desea escribir sobre los archivos existentes.

ssh-keygen -t rsa

Copia el contenido de la clave pública en el portapapeles. (A continuación se muestra la forma en que debe hacerlo en un Mac).

cat ~/.ssh/id_rsa.pub | pbcopy

Vaya a su cuenta en GitHub y añadir esta clave.

Name: My new public key
Key: <PASTE>

Salir del terminal para reiniciar una nueva.

Si recibe mensajes de error sin sentido como "Introduzca su contraseña" para su clave pública cuando nunca ha introducido, considerar esta técnica empezar de nuevo. Como se puede ver arriba, no es complicado.

Nunca logré git para trabajar por completo en Powershell. Pero en la cáscara Git Bash no tenía ningún problema relacionados con los permisos, y yo no tenía necesidad de establecer chmod etc ... Después de añadir el ssh para Github que estaba en marcha y funcionando.

Tipo en el terminal:

chmod -Rf 700 ~/.ssh/

Y vuelve a intentarlo.

¿Se copia el archivo de la clave de otra máquina?

He creado un archivo de id_rsa en la máquina cliente y luego pegar la clave de lo que quería. No hay problemas de permisos. Nada va a establecer. Sólo funcionó. También funciona si se utiliza PuTTYgen para crear la clave privada.

Posiblemente algún problema grupo oculto si está copiando desde otra máquina.

Probado en dos máquinas de Windows 8.1. El uso de Sublime Text 3 a copiar y pegar la clave privada. Usando Git Bash (Git-1.9.4-preview20140611).

Después de actualizar mi instalación de Cygwin a una versión alrededor de febrero de 2015 (1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin), de repente se topó con la advertencia UNPROTECTED PRIVATE KEY FILE.

He arreglado este problema después de ejecutar el comando siguiente:

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

( otra respuesta a otra pregunta da más contexto)

@ respuesta de Koby no funciona para mí, así que hacer un pequeño cambio.

cd ~/.ssh
chmod 700 id_rsa.pub

Esto funciona bien para mí en Mac.

Yo tenía el mismo problema en Windows 10, donde traté de SSH en una caja de vagabundo. Este parece ser un error en la antigua versión de OpenSSH. Lo que funcionó para mí:

  1. Instalar la última OpenSSH desde http://www.mls-software.com/opensshd. html
  2. where.exe ssh

(nótese el ".exe" si está usando Powershell)

Es posible que vea algo como:

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

Tenga en cuenta que en el ejemplo anterior la última OpenSSH es el segundo en el camino por lo que no se ejecutará.

Para cambiar el orden:

  1. Haga clic con el botón de Windows -> Configuración -> "Editar las variables de entorno del sistema"
  2. En la pestaña "Avance" clic "Variables de entorno ..."
  3. En Variables del sistema de edición "trayectoria".
  4. Seleccionar. "C: \ Archivos de programa \ OpenSSH \ bin" y "Subir" para que aparezca en la parte superior
  5. Haga clic en Aceptar
  6. Reinicie su consola para que puedan aplicar las nuevas variables de entorno.

Mi sistema es un poco un lío con bash / cygwin / git / msysgit / quizá, más ...

chmod no tuvo efecto sobre la tecla, o el archivo config.

Entonces decidí abordarlo desde Windows, que trabajaba.

  1. Haga clic en el archivo cuyo permiso que necesita ser arreglado.
  2. Seleccionar Properties.
  3. Seleccione la pestaña Security.
  4. Haga clic Advanced cerca del fondo.
  5. Haga clic Change, junto a Owner cerca de la parte superior.
  6. Tipo "Mi-impresionante-Nombre de usuario" (obviamente cambiar eso a su actual nombre de usuario de Windows) y haga clic en Check Names, entonces OK.
  7. Bajo Permission entries:, resalte cada usuario que no es "Mi-impresionante-Nombre de usuario" y seleccione Remove. Repita este procedimiento hasta "Mi-impresionante-Nombre de usuario" es el único que queda.
  8. Seleccione "Mi-impresionante-Nombre de usuario" y haga clic en Edit a continuación.
  9. Asegúrese de que el Type: en la parte superior se establece en Allow, y luego marque la casilla junto a Full control.
  10. Hit OK, Apply, OK, OK.

  11. darle otra oportunidad ahora ...

Parece que la veces la maqueta de bash no puede controlar la propiedad de los archivos. Es especialmente extraño, ya que es generada a partir de un guión maqueta de bash. Vaya usted a saber.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top