una setup que publica privada llaves llave generar crear claves clave git ssh cygwin msysgit openssh

setup - Los permisos de clave privada SSH que utilizan Git GUI o ssh-keygen son demasiado abiertos



que es una llave ssh (23)

¿Copiaste el archivo clave de otra máquina?

Acabo de crear un archivo id_rsa en la máquina cliente y luego pegué la clave que quería. No hay problemas de permisos. No hay nada que establecer. Simplemente funcionó. También funciona si utiliza PuTTYgen para crear la clave privada.

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

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

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

Esto es en windows

Tengo cygwin + git, así como msysgit.

Msysgit se instaló con las siguientes opciones:

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

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

  • Windows cmd prompt
  • Potencia Shell
  • Git Bash
  • Cygwin

De alguna manera, me las arreglé para ubicarme en una posición en la que cuando intento clonar un repositorio utilizando 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 es usar 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, verifico 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 son aparentemente demasiado relajados. Cómo llegaron de esta manera, no tengo ni idea.

Puedo intentar cambiarlos ...

$ chmod -v -R 600 ~/.ssh

lo 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 efecto. Todavía me sale el mismo error, y haciendo

$ ls -l -a ~/.ssh

Obtiene los mismos permisos que antes.

ACTUALIZAR:

Intenté arreglar los permisos para 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 realmente arreglar estos permisos?


A menos que haya una razón por la que desee mantener ese par de claves privada / pública (id_rsa / id_rsa.pub), o disfrutar golpeando su cabeza en la pared, recomiendo simplemente recrearlas y actualizar su clave pública en github.

Comience por hacer una copia de respaldo de su directorio ~ / .ssh.

Ingrese lo siguiente y responda "y" si desea sobreescribir los archivos existentes.

ssh-keygen -t rsa

Copia el contenido de la clave pública a tu portapapeles. (A continuación se muestra cómo debe hacerlo en una Mac).

cat ~/.ssh/id_rsa.pub | pbcopy

Vaya a su cuenta en github y agregue esta clave.

Name: My new public key Key: <PASTE>

Salga de su terminal y reinicie uno nuevo.

Si recibe mensajes de error sin sentido como "Ingrese su contraseña" para su clave pública cuando nunca ingresó una, considere esta técnica para comenzar de nuevo. Como ves arriba, no es complicado.


Cambió los permisos en todo el directorio, y estoy de acuerdo con que Splash es una mala idea. Si puede recordar cuáles son los permisos originales para el directorio, intentaría volver a establecerlos y luego hacer lo siguiente

cd ~/.ssh chmod 700 id_rsa

dentro de la carpeta .ssh. Eso establecerá el archivo id_rsa en rwx (leer, escribir, ejecutar) solo para el propietario (usted) 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 conjunto de claves SSH para ese usuario, creando así una nueva carpeta .ssh que tendrá permisos predeterminados. Puede usar esa nueva carpeta .ssh como referencia para los permisos para restablecer su carpeta y archivos .ssh.

Si eso no funciona, trataría de hacer una desinstalación de msysgit, eliminando TODAS las carpetas .ssh en la computadora (solo como medida segura), luego reinstalé msysgit con la configuración deseada e intenté comenzar de nuevo por completo (aunque creo que me dijiste ya lo intentaste).

Editado: También encontré este enlace a través de Google - Arreglo "ADVERTENCIA: ¡ARCHIVO CLAVE PRIVADO NO PROPUESTO!" en Linux Aunque está dirigido a Linux, puede ser útil ya que estamos hablando de permisos de liunx y demás.


Cambiar los permisos de archivo de Propiedades, deshabilitar la herencia y ejecutar chmod 400 no me funcionó. Los permisos para mi archivo de clave privada fueron:

-r - r ----- 1 alex Ninguno 1766 8 de marzo 13:04 /home/alex/.ssh/id_rsa

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

chown alex: Administradores ~ / .ssh / id_rsa

Luego pude cambiar los permisos con éxito con chmod 400 y ejecutar un git push.


Después de abordar el problema recientemente, y este es uno de los mejores resultados de Google, pensé que sería un trabajo sencillo documentado en discusión aquí: http://code.google.com/p/msysgit/issues/detail?id=261#c40

Simplemente implica sobrescribir el mysys ssh.exe con su cygwin ssh.exe


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 ( 1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin ), de repente me topé con la advertencia de UNPROTECTED PRIVATE KEY FILE 1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin .

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

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

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


El truco para mí fue actualizar la variable de entorno CYGWIN con: " tty nodosfilewarning ". Ni siquiera necesitaba chmod la llave.


Escriba en la terminal:

chmod -Rf 700 ~/.ssh/

E intenta de nuevo.


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

En Windows, esto funcionó para mí:

  1. Instale cygwin.

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

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

  4. Si aún no funciona, vaya a 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


Estoy en XP y esto le permitió a Git Bash comunicarse con Github (después de mucha frustración):

  1. copie c:/cygwin/bin/cyg* (~ 50 archivos) en c:/Program Files/Git/bin/
  2. copie c:/cygwin/bin/ssh.exe en c:/Program Files/Git/bin/ (sobrescritura)
  3. Cree el archivo c:/Documents and Settings/<username>/.ssh/config contiene:

    Host github.com User git Hostname github.com PreferredAuthentications publickey IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"

  4. (Opcional) Use ssh -v git@github para ver la conexión depurada.

  5. Intenta un empuje!

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

  • ERROR: mingw32 ve todos los archivos como 644 (otros / legibles por el grupo), y nada de lo que probé en mingw32, cygwin o Windows podría solucionarlo.
  • La versión SSH de mingw32 no permite eso para las claves privadas (generalmente una buena política en un servidor).

Estoy jugando ahora mismo con Git 1.6.5, y no puedo replicar tu 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 [email protected]: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 [email protected] 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 permisos de archivo para mis claves.

Ambiente:

  • Windows Server 2008 SP2 en NTFS
  • usuario: administrador
  • variables del entorno:
    • PLINK_PROTOCOL = ssh
    • HOME = / c / profiles / home

Actualización: Git 1.6.5.1 también funciona.



La respuesta de @Koby no me funciona, así que hago un pequeño cambio.

cd ~/.ssh chmod 700 id_rsa.pub

Esto funciona bien para mí en Mac.


Lo resuelvo corriendo:

chmod 400 ~/.ssh/id_rsa

Espero poder ayudar. Buena suerte.


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 coloca todos los archivos "su" bajo el equivalente de c: / cygwin / home / username. Trata esa carpeta para cualquier configuración específica del usuario en lugar del directorio de usuarios de Windows.


Nunca logré que Git trabajara completamente en Powershell. Pero en el shell de git bash no tuve ningún problema relacionado con los permisos, y no tuve que configurar chmod, etc. Después de agregar el ssh a Github, estaba en funcionamiento.


OK, así es como forzé el cambio en mis archivos de Windows con respecto a los permisos en Win7: encuentre su clave ssh en el explorador de Windows: C: / Usuarios [nombre_usuario_aquí] .ssh / id_rsa

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

Ahora elimina a todos los que no sean tu nombre de usuario. Esto incluye a los usuarios del administrador y del sistema. En este punto, puede obtener un diálogo sobre la herencia de permisos; elija la opción que NO hereda, ya que solo queremos cambiar este archivo.

Haga clic en Aceptar y guardar hasta que termine.

Luché con esto durante días porque mis ventanas no cambiarían los permisos de archivo desde la línea de comandos. De esta manera, también se realiza REALMENTE, en lugar de utilizar soluciones de trabajo emocionantes que pueden tener consecuencias extrañas.


PARA LOS USUARIOS DE MAC:

Cambie la configuración de su 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 de ruta en el comando correctamente).


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

  1. En el explorador de Windows, haga clic con el botón derecho en su archivo id_rsa y seleccione Propiedades
  2. Seleccione la pestaña Seguridad y haga clic en Editar ...
  3. Marque la casilla Denegar al lado de Control total para todos los grupos EXCEPTO los administradores
  4. Vuelva a intentar su comando Git

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 pared por un tiempo, pero luego encontré la solución mágica:

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

CYGWIN

Básicamente, es un defecto en mingw32 utilizado por git windows binary, ya que se ven todos los archivos 644 y todas las carpetas 755 siempre. La eliminación de la variable de entorno no cambia ese comportamiento, pero aparentemente le dice a ssh.exe que ignore el problema. Si establece los permisos adecuados para su id_rsa a través de la configuración de seguridad de los exploradores (realmente no hay necesidad de tener ningún otro usuario allí que no sea el suyo, ni "todos", ni "administradores", ni "sistema". Ninguno. Solo usted) , todavía estarás seguro.

Ahora, por qué mingw32, un sistema diferente de cygwin, haría cualquier uso de la variable de entorno CYGWIN, está fuera de mi alcance. Parece un error para mí.


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

  1. Copie desde cygwin ssh.exe y todo cyg * .dll en el directorio bin de Git (puede que esto no sea necesario, pero es un paso que di, pero esto solo no solucionó el problema)

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

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

Anfitrión heroku.com
Nombre de host heroku.com
Puerto 22
Identidades solo si
Archivo de identidad ~ / .ssh / id_heroku
TCPKeepAlive sí
Usuario brandon

Tuve que usar Usuario como mi dirección de correo electrónico para heroku.com Nota: esto significa que necesita crear una clave, seguí esto para crear la clave y cuando se le solicite el nombre de la clave, asegúrese de especificar id_heroku here

  1. a continuación, agregue la clave:
    teclas heroku: agregar ~ / .ssh / id_heroku.pub

Tuve el mismo problema en Windows 10 cuando intenté SSH en una caja Vagrant. Esto parece un error en la antigua versión de OpenSSH. Lo que funcionó para mí:

  1. Instale el último OpenSSH desde http://www.mls-software.com/opensshd.html
  2. where.exe ssh

(Tenga en cuenta el ".exe" si está utilizando Powershell)

Es posible que veas 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, el último OpenSSH ocupa el segundo lugar en la ruta, por lo que no se ejecutará.

Para cambiar el orden:

  1. Haga clic derecho en el botón de Windows -> Configuración -> "Editar las variables de entorno del sistema"
  2. En la pestaña "Avanzar", haga clic en "Variables de entorno ..."
  3. En Variables del sistema edite "Ruta".
  4. Seleccione "C: / Archivos de programa / OpenSSH / bin" y "Subir" para que aparezca en la parte superior.
  5. Haga clic en Aceptar
  6. Reinicie la consola para que se apliquen las nuevas variables de entorno.

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

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

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