Permisos de key privada SSH usando Git GUI o ssh-keygen son demasiado abiertos

Recientemente no he podido clonar o enviar a github, y estoy tratando de encontrar la causa raíz.

Esto está en Windows

Tengo cygwin + git, así como msysgit.

Msysgit se instaló con las siguientes opciones:

  • OpenSSH
  • Use Git desde el símbolo del sistema de Windows

Eso me da 4 entornos para tratar de usar git en:

  • Prompt de cmd de Windows
  • Potencia Shell
  • Git Bash
  • Cygwin

De alguna manera, me las he arreglado para ponerme en una position en la que cuando bash clonar un repository 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 > ignonetworking. 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 lo que usa msysgit. Sospecho que cygwin funciona porque la carpeta .ssh está ubicada en otra parte, pero no estoy seguro de por qué

En Git Bash, compruebo los permissions:

 $ 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 permissions son aparentemente muy relajados. Cómo llegaron de esta manera, no tengo idea.

Puedo tratar de 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. Todavía obtengo el mismo error y hago

 $ ls -l -a ~/.ssh 

produce los mismos permissions que antes.

ACTUALIZAR:

Traté de corregir los permissions para esos files en cygwin, y cygwin informa de sus permissions correctamente, gitbash no: alt text http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

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

Cambiaste los permissions en todo el directory, lo que estoy de acuerdo con Splash es una mala idea. Si puede recordar cuáles son los permissions originales para el directory, trataría de volver a establecerlos y luego hacer lo siguiente

 cd ~/.ssh chmod 700 id_rsa 

dentro de la carpeta .ssh. Eso establecerá el file id_rsa en rwx (lectura, escritura, ejecución) para el propietario (usted) solamente, y cero acceso para todos los demás.

Si no puede recordar cuáles son las configuraciones originales, agregue un nuevo usuario y cree un set de keys SSH para ese usuario, creando así una nueva carpeta .ssh que tendrá permissions pnetworkingeterminados. Puede usar esa nueva carpeta .ssh como reference de permissions para restablecer su carpeta .ssh y sus files.

Si eso no funciona, trataría de hacer una desinstallation de msysgit, eliminar TODAS las carpetas .ssh en la computadora (solo para una medida segura), luego reinstalar msysgit con la configuration deseada e intentar comenzar de nuevo por completo (aunque creo que me dijiste ya has intentado esto).

Editado: También encontré este enlace a través de Google – Reparando "ADVERTENCIA: ARCHIVO PRIVADO SIN PROTEGER!" en Linux Si bien está dirigido a Linux, podría ser útil ya que estamos hablando de permissions de liunx y demás.

Hay un error con chmod de cygwin, consulte:

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 

Para los sistemas * nix, la solución obvia es chmod 600 id_rsa ofc, pero en Windows 7 tuve que golpear mi cabeza contra la panetworking por un time, pero luego encontré la solución mágica:

vaya a Mi PC / haga clic con el button derecho / Propiedades / Configuración avanzada del sistema / Variables de entorno y BORRE la variable (posiblemente desde el sistema y el entorno del usuario):

CYGWIN

Básicamente, es un defecto en mingw32 utilizado por git windows binary, viendo todos los files 644 y todas las carpetas 755 siempre. La eliminación de la variable de entorno no cambia ese comportamiento, pero en apariencia le dice a ssh.exe que ignore el problema. Si configura los permissions adecuados para su id_rsa a través de la configuration de security de los exploradores (no es necesario tener ningún otro usuario allí que el suyo, no "todos", ni "administradores", ni "sistema". Ninguno. Solo usted) , aún estarás seguro.

Ahora, ¿por qué mingw32, un sistema diferente de cygwin, haría 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ó a Git Bash comunicarse con Github (después de mucha frustración):

  1. copie c:\cygwin\bin\cyg* (~ 50 files) en c:\Program Files\Git\bin\
  2. copie c:\cygwin\bin\ssh.exe en c:\Program Files\Git\bin\ (sobreescritura)
  3. Cree el file c:\Documents and Settings\<username>\.ssh\config contenga:

     Host github.com User git Hostname github.com PrefernetworkingAuthentications publickey IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa" 
  4. (opcional) Use ssh -v git@github para ver la connection depurada.

  5. ¡Prueba un empujón!

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

  • ERROR: mingw32 ve todos los files como 644 (otro / legible por grupo), y nada de lo que probé en mingw32, cygwin o Windows podría solucionarlo.
  • La versión SSH de mingw32 no permitirá eso para keys privadas (generalmente una buena política en un server).

Para Windows 7 usando el Git que se encuentra aquí (usa MinGW, no Cygwin):

  1. En el explorador de Windows, haga clic derecho en su file id_rsa y select Propiedades
  2. Seleccione la pestaña Seguridad y click Editar …
  3. Marque la casilla Denegar junto a Control total para todos los grupos EXCEPTO Administradores
  4. Vuelve a intentar tu command Git

Cambiar los permissions de file de Propiedades, deshabilitar la inheritance y ejecutar chmod 400 no funcionó para mí. Los permissions para mi file de key privada fueron:

-r – r —– 1 alex Ninguna 1766 mar 8 13:04 /home/alex/.ssh/id_rsa

Entonces noté que el grupo era Ninguno, así que solo corrí

chown alex: Administradores ~ / .ssh / id_rsa

Entonces podría cambiar los permissions con chmod 400 y ejecutar un git push.

PARA LOS USUARIOS DE MAC:

Cambie la configuration de su file de par de keys tipeando esto en la terminal:

 chmod og-r *filename.pem* 

(asegúrese de estar en el directory correcto o el nombre de file de ruta en el command correctamente).

OK así que aquí es cómo realmente forcé el cambio en mis files de Windows con respecto a los permissions en Win7: Encuentra tu key ssh en el explorador de Windows: C: \ Users [your_user_name_here] .ssh \ id_rsa

Haga clic con el button derecho en el file> Propiedades> pestaña Seguridad> button Avanzado> Cambiar permissions

Ahora elimine a todos los que no sean realmente su nombre de usuario. Esto incluye a los usuarios del Administrador y del Sistema. En este punto, puede get un dialog sobre la inheritance de permissions: elija la opción que NO henetworkinga, ya que solo queremos cambiar este file.

Haga clic en Aceptar y guarde hasta que finalice.

Luché con esto durante días porque mis windows no cambiarían los permissions de file de la línea de command. De esta manera, también se REALIZA REALMENTE, en lugar de utilizar emocionantes soluciones de trabajo que pueden tener consecuencias extrañas.

Lo soluciono corriendo:

 chmod 400 ~/.ssh/id_rsa 

Espero ayudar Buena suerte.

Después de haberme encontrado con el problema recientemente y de ser uno de los principales resultados de Google, pensé que podría include un trabajo sencillo documentado en el debate aquí: http://code.google.com/p/msysgit/issues/detail?id = 261 # c40

Simplemente implica sobreescribir mysys ssh.exe con su cygwin ssh.exe

Tuve el mismo problema en Windows XP recientemente. Traté de chmod 700 en mi file ~ / .ssh / id_rsa, pero no pareció funcionar. Cuando eché un vistazo a los permissions usando ls -l en ~ / .ssh / id_rsa, pude ver que mis permissions efectivos aún eran 644.

Entonces recordé que los permissions de Windows también henetworkingan los permissions de las carpetas, y la carpeta todavía estaba abierta para todos. Una solución podría ser establecer permissions para la carpeta también, pero creo que una mejor manera sería decirle al sistema que ignore la inheritance de este file. Esto se puede hacer usando la opción avanzada en la pestaña de security en las properties del file, y desmarcando "henetworkingar de los permissions principales …"

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

Estoy jugando ahora con Git 1.6.5, y no puedo replicar tu configuration:

 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 tampoco modifica los permissions de file para mis keys.

Ambiente:

  • Windows Server 2008 SP2 en NTFS
  • usuario: administrador
  • ambiente vars:
    • PLINK_PROTOCOL = ssh
    • INICIO = / c / profiles / home

Actualización: Git 1.6.5.1 también funciona.

Este es un problema particularmente complicado en Windows, donde no es suficiente simplemente modificar los files correctamente. Tienes que configurar tu entorno.

En Windows, esto funcionó para mí:

  1. Instala cygwin.

  2. Reemplace msysgit ssh.exe con cygwin's ssh.exe.

  3. Usando cygwin bash, chmod 600 el file de key privada, que era "id_rsa" para mí.

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

    Valor variable
    CYGWIN sbmntsec

Pude solucionar esto haciendo dos cosas, aunque es posible que no tenga que hacer el paso 1.

  1. copy desde cygwin ssh.exe y todos los files cyg * .dll en el directory bin de Git (esto puede no ser necesario pero es un paso que tomé pero esto por sí solo no solucionó las cosas)

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

    Agregué algunos detalles a mi file ~ / .ssh / config:

Host heroku.com
Nombre de host heroku.com
Puerto 22
IdentidadesSolo sí
IdentityFile ~ / .ssh / id_heroku
TCPKeepAlive sí
Usuario brandon

Tuve que usar el usuario como mi dirección de correo electrónico para heroku.com Nota: esto significa que necesita crear una key, seguí esto para crear la key y cuando solicita el nombre de la key, asegúrese de especificar id_heroku http: / /help.github.com/win-set-up-git/

  1. luego agrega la key:
    keys heroku: agregar ~ / .ssh / id_heroku.pub

El truco para mí fue actualizar la variable de entorno CYGWIN con: " tty nodosfilewarning ". Ni siquiera necesité cambiar la key.

No es una respuesta directa a la pregunta principal, sino a su pregunta sobre cómo funciona la carpeta de cygwin … Como regla general, cygwin pone todos sus "files" bajo el equivalente de c: \ cygwin \ home \ username. Trata esa carpeta para cualquier configuration específica del usuario en lugar del directory de usuario de Windows.

A less que exista un motivo por el que desee mantener ese par de keys privadas / públicas (id_rsa / id_rsa.pub), o disfrute golpeando su cabeza en la panetworking, le recomiendo que las vuelva a crear y actualice su key pública en github.

Comience haciendo una copy de security de su directory ~ / .ssh.

Ingrese lo siguiente y responda "y" a si desea sobre escribir los files existentes.

 ssh-keygen -t rsa 

Copie los contenidos de la key pública en su portapapeles. (A continuación se explica cómo debe hacerlo en una Mac).

 cat ~/.ssh/id_rsa.pub | pbcopy 

Vaya a su count en github y agregue esta key.

 Name: My new public key Key: <PASTE> 

Salga de su terminal y reinicie uno nuevo.

Si recibe posts de error sin sentido como "Ingrese su contraseña" para su key pública cuando nunca ingresó uno, considere esta técnica de inicio. Como ves arriba, no es complicado.

Nunca logré que Git trabajara por completo en Powershell. Pero en el intérprete de commands de git bash no tenía ningún problema relacionado con el permiso, y no necesité configurar chmod, etc … Después de agregar el ssh a Github, ya estaba funcionando.

Escriba en la terminal:

 chmod -Rf 700 ~/.ssh/ 

E intenta de nuevo.

¿Copiaste el file de key de otra máquina?

Acabo de crear un file id_rsa en la máquina cliente y luego pegué la key que quería. Sin problemas de permissions. Nada para establecer. Simplemente funcionó. También funciona si usa PuTTYgen para crear la key privada.

Posiblemente algún problema de grupo oculto si lo está copyndo desde otra máquina.

Probado en dos máquinas con Windows 8.1. Usando Sublime Text 3 para copyr y pegar la key privada. Usando Git Bash (Git-1.9.4-preview20140611).

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

Solucioné este problema después de ejecutar el siguiente command:

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

( Otra respuesta a otra pregunta da más context)

La respuesta de @ koby no funciona para mí, así que hago un pequeño cambio.

 cd ~/.ssh chmod 700 id_rsa.pub 

Esto funciona bien para mí en Mac.