Pregunta ¿Cómo le digo a Git para Windows dónde encontrar mi clave RSA privada?


La configuración de Mi Git funciona bien en Linux, pero cuando intento configurar las cosas en Windows (usando Git para Windows y Tortuga), No sé dónde poner mi clave SSH privada (o, mejor aún, cómo decirlo) ssh donde se encuentra). Estoy usando la opción estándar ssh.exe durante la instalación de Git para Windows. La configuración funciona bien si permito la autenticación de contraseña (en lugar de RSA) en el servidor.


461
2017-10-25 16:45


origen


Tengo el mismo problema, puedo ssh en mi caja de desarrollo usando una clave pública como "root" usando el programa "Git Bash" que se instala con "Git para Windows" pero no puedo iniciar sesión como "git" con mi clave a pesar de que he copiado mi archivo "authorized_keys" de mi "root" a mi usuario "git" y configuro los propietarios y los permisos correctamente. ¿Por qué no puedo iniciar sesión como "git" cuando "root" funciona con el mismo archivo "authorized_keys"? En cambio, para "git" pasa todas las claves privadas, que son exactamente las mismas que funcionan con "root" y solicita una contraseña. Este es un servidor Centos 5.5 por cierto. - Jarrod Roberson
@fuzzy lollipop: ¿Tiene los permisos correctos en el archivo authorized_keys de su usuario git? Debe ser chmod 600 y debe ser propiedad del usuario git. Si es propiedad del usuario root, no funcionará - Dan McClain
Sí, todos los archivos y directorios son los propietarios y permisos correctos - Jarrod Roberson


Respuestas:


Para Git Bash

Si está ejecutando msysgit (supongo que sí) y está buscando ejecutar Git Bash (lo recomiendo sobre TortoiseGit, pero me inclino más por el CLI que por la GUI), necesita averiguar cuál es su directorio de inicio para Git Bash iniciándolo luego teclea pwd (En Windows 7, será algo así como C:\Users\phsr Yo creo que). Mientras estés en Git Bash, deberías mkdir .ssh.

Después de tener el directorio de inicio, y una .ssh debajo de esa carpeta, desea abrir PuTTYgen y abrir la clave (archivo .ppk) que creó anteriormente. Una vez que su clave está abierta, desea seleccionar Conversions -> Export OpenSSH key y guardarlo en HOME\.ssh\id_rsa. Una vez que tenga la clave en esa ubicación, Git Bash la reconocerá y la usará.

Nota: Los comentarios indican que esto no funciona en todos los casos. Es posible que necesite copiar la clave OpenSSH para Program Files\Git\.ssh\id_rsa (o Program Files (x86)\Git\.ssh\id_rsa).

Para TortoiseGit

Cuando utilice TortoiseGit, debe configurar la clave SSH a través de direcciones de pacey. Debe hacerlo para cada repositorio con el que esté utilizando TortoiseGit.


459
2017-11-05 17:18



Las instrucciones de pacey para tortoisegit no funcionarán hasta que tenga el repositorio (porque la configuración de configuración 'remota' no aparece a menos que actúe en un repositorio), y probablemente no pueda obtener el repositorio en primer lugar si puede ' Autentícate para clonar desde el origen. ¡Difícil! - Kylotan
Con GitBash encontré que tenía que copiar mi ~/.ssh/id_rsa archivo a Program Files\Git\.ssh\id_rsa - lo que fue un poco confuso, pero ahora IntelliJ y Windows cmd pueden enviar a los repositorios de git que usan autenticación clave. - JP.
Igualmente. Acabo de instalar git-para-Windows, lo estoy ejecutando desde cmd.exe. Necesitaba poner los archivos id_rsa y id_rsa.pub dentro c:\program files (x86)\Git\.ssh . los .ssh dir ya estaba presente. Gracias, JP. - Cheeso
El segundo párrafo era de oro. :) - Bjørn
@Damon: debería ser id_rsa sin la extensión. Ese es el nombre del archivo, no es un directorio - Dan McClain


Al usar el cliente SSH incorporado que se incluye con Git para Windows, debe configurar la variable de entorno HOME para que el cliente Git SSH pueda encontrar la clave.

Por ejemplo, en una Windows Vista instalación, esto se haría mediante la emisión setx HOME c:\Users\admin\ en la linea de comando

Hizo mi día y solucionó el problema con Git siempre que su clave privada no estuviera protegida por contraseña. Si desea utilizar ssh-agent, probablemente pueda ejecutar ssh-agent cmd.exe (aunque nunca lo he hecho) y ssh-add como siempre.

Tenga en cuenta que todas las herramientas Git / SSH deben ejecutarse desde un cmd.exe para no parpadeo una ventana.

Si esto no funciona correctamente, el uso de plink puede lograrse mediante ajustes GIT_SSH. Consulte todos los tutoriales SVN + ssh; Esta es básicamente la misma tubería que necesita para configurar.


101
2017-11-05 18:24



Esto es lo que estaba buscando ya que estoy intentando usar el símbolo del sistema de Windows, no git bash. - John Ruiz
Solución agradable, fácil, ¡pero hubiera sido difícil entenderlo sin esto! - thaddeusmt
También es importante no tener espacios en blanco entre HOME = y c: \ ... La solución de Oct me sirvió. :-) - Lutz
los setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use cmd` en su lugar. - trejder
+1 GIT_SSH=c:\pathto\plink.exe - Nick Grealy


Puede especificar la ubicación de la clave para TortoiseGit de la siguiente manera:

  • Abra una ventana del explorador.
  • Abre el menú contextual y navega Tortuga → Ajustes
  • En la ventana ahora abierta, navegue a Git → Remoto
  • Establezca la ruta a su tecla PuTTY en el cuadro de entrada correspondiente.

A continuación se muestra una captura de pantalla:

Enter image description here


48
2017-11-05 14:07



Además, si necesita convertir su clave privada al formato '.ppk' de otro formato, puede seguir ESTA - Tariq M Nasim
Funcionó para mí. - Maxim Eliseev
Git> Remote solo aparece una vez que haya clonado con éxito el repositorio. - Steve Pitchers
Una solución mucho más fácil es configurar todo funcionando correctamente en git (usando openSSH), y luego decirle a TortoiseGit que use el ssh.exe que usa git. Ver stackoverflow.com/a/33328628/318317De esa manera, solo necesitas arreglar esto una vez. - Daniel Rose


Ninguna de las respuestas anteriores funcionó para mí. Aquí fue lo que funcionó para mí al final. En realidad es bastante simple, si sabes qué escribir. No necesita puty.

  • Abrir un prompt de Git Bash
  • Escribe 'ssh-keygen'
    • Aceptar la ubicación por defecto
    • Elija una frase de contraseña en blanco (así que simplemente presione 'enter' a todas las preguntas ')
  • Ahora copie la clave pública a su servidor, por ejemplo: scp ~ / .ssh / id_rsa.pub someuser@someserver.com: ~

Eso es lo que se hace en tu propia computadora. Ahora ssh en el servidor de destino, a continuación, haga

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

¡Eso es! Has terminado Desde Git Bash, haga lo siguiente para probar:

ssh someuser@someserver.com ls

Si enumera los archivos en su directorio de inicio en el servidor Git, ¡y listo!

Para GitHub, no tiene acceso de shell a su servidor, pero puede cargar la clave utilizando su sitio web, así que para el bit 'ahora copie a su servidor', haga:

  • En Git Bash, escriba 'cat ~ / .ssh / id_rsa.pub', seleccione el resultado y cópielo en el portapapeles.
  • En el sitio web de GitHub, vaya a 'Configuración de la cuenta', 'SSH y claves GPG', haga clic en 'Nueva clave SSH' y pegue la clave.

45
2018-04-25 01:32



No cree claves sin las frases de contraseña. Es como poner su contraseña en un archivo de texto, excepto que todos conocen la ubicación predeterminada para las claves privadas. - GregB
Estás respondiendo la pregunta equivocada. La Q es cómo apuntar a una clave privada existente. - Orangutech
@GregB, lo veo así: cualquier servidor para el que cree una clave sin contraseña es tan seguro como mi computadora portátil, es una extensión del perímetro de seguridad de mi computadora portátil. En realidad, ni siquiera, ya que mi directorio de inicio está encriptado ;-) Por lo tanto, es tan seguro como la partición de inicio encriptada en mi computadora portátil, que es "lo suficientemente buena" para garantizar el acceso a github, en mi opinión. (que puede variar de su opinión, por supuesto!) - Hugh Perkins
@GregB ¡No caigas en la paranoia! :] Claro, el uso de claves protegidas por contraseña es mucho más seguro, que el uso sin contraseña, pero afirmar que la clave sin contraseña es tan fácil de descifrar como el almacenamiento de contraseñas en un archivo de texto es un obvio falso. He visto muchas guías, que alientan a los usuarios a usar claves protegidas por contraseña, pero nunca he visto ningún reclamo, de que usarlas sin contraseñas no es seguro en absoluto. Además: algunos sistemas no admiten soluciones para recordar la contraseña de la clave, introducida por los usuarios y la piden, cada vez que se utiliza la clave. Lo que hace que el uso de claves SSH sea inútil en esta situación. - trejder
Por el bien de la conversación, que se ha desviado de la pregunta original, las claves SSH son ciertamente más seguras desde el punto de vista criptográfico que las contraseñas, pero esa seguridad se pone en riesgo al no cifrar sus claves SSH. Mi enfoque personal es desbloquear mis claves al comienzo del día usando un agente de SSH, que luego guarda las claves desencriptadas en la memoria para que no tenga que volver a ingresar la contraseña durante todo el día. Como comenta @Hugh Perkins, y parafraseando, todos ustedes conocen sus requisitos de seguridad mejor que yo / nosotros lo hacemos :). - GregB


Si está utilizando msysgit con las herramientas OpenSSH, necesita crear ~/.ssh/id_rsa, o crear una configuración de Git en ~/.ssh/config lo que apunta a su clave.

Este es un ejemplo de una configuración de Git para Bitbucket que usará el nombre de usuario correcto y una clave distinta de la clave predeterminada (en caso de que mantenga una clave para las conexiones SSH y otra para las cuentas de Git).

~ / .ssh / config:

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

Una vez en Git Bash, puede ejecutar dos comandos para agregar su clave al ssh-agent de su sesión actual para evitar tener que ingresar la contraseña de forma repetida.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key

34
2018-04-11 06:34



Hice esto pero para github.com: Host github.com IdentityFile ~ / .ssh / github_rsa - Sarah Vessels
Si tiene un espacio en su ruta, debe usar comillas: IdentityFile "/ C / My Keys / key" - r03
Prefiero esta manera, porque esto me permitió conectar rápidamente las claves existentes desde otra PC. - Kirill Gusyatin
Mi .gitconfig tiene secciones. ¿Bajo qué secciones debo poner estos hosts? - Steve Yakovenko


Acabo de configurar% HOME% =% HOMEPATH%

Esto tiene la ventaja de trabajar para todos los usuarios que inician sesión en el sistema (cada uno de ellos obtiene carpetas .ssh separadas).

En Vista:

  1. Haga clic derecho en la computadora
  2. Elegir propiedades
  3. Haga clic en Configuración avanzada del sistema
  4. Haga clic en Variables de entorno
  5. En la sección inferior (Variables del sistema), haga clic en Nuevo.
  6. Para el tipo de nombre de variable: INICIO
  7. Para el tipo de ruta variable:% HOMEPATH%
  8. Haga clic en Aceptar

14
2017-10-12 01:26



En mi caso he añadido HOME =% USERPROFILE% - igor
Tenga en cuenta que %HOMEPATH% no contiene la letra de unidad, por lo que si su fuente no está en C: necesitas anteponer C: a %HOME%. - Graeme Perrow


Su clave privada debe agregarse al agente SSH en su estación de trabajo. La forma en que logre esto dependerá de qué cliente de git esté utilizando, sin embargo, puTTY y su agente asociado (pageant) podrían hacer el truco, aquí está el enlace a los binarios oficiales y la fuente:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


7
2017-10-25 17:38



Indiqué anteriormente que estoy usando Git para Windows y estoy usando ssh.exe (empaquetado con git) en lugar de masilla. Debe haber alguna práctica estándar para agregar una clave privada, parece que no puedo descubrir cómo. Si bien el software de conmutación puede permitirme iniciar sesión, tiene que haber una manera de hacerlo con la configuración estándar de Git, ¿no? - binaryorganic
Lo siento, no trabajo en Windows, solo Linux. Pero la clave tiene que estar en su agente SSH. ¿hay un agent.exe o algo por el estilo? - Declan Shanaghy
Sí, la configuración fue la torta en el lado de Linux. Pero desafortunadamente, tengo que tenerlo funcionando en Windows. Hay varios archivos ejecutables relacionados con ssh en la carpeta git / bin en el cuadro de Windows (ssh, ssh-add, ssh-agent, ssh-keygen y ssh-keyscan), pero no sé cómo crearlos. hacer nada. Simplemente parpadean una ventana cmd para abrir y cerrar de inmediato. Estoy perplejo. - binaryorganic
Pageant realmente resuelve el problema por mí: tengo un acceso directo en la carpeta de Inicio de mi Menú de Inicio (C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) apuntando a "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", para que cargue mis claves SSH en el inicio y esto hace que GIT "simplemente funcione": o) - Owen Blacker
@OwenBlacker OMFG! Tú definitivamente debería escribe este comentario en tamaño completo responder! Esto es la única solución aquí, que en realidad me ayudó y resolvió mi problema! Lástima, que solo te puedo dar +1! :] - trejder


Ok miré la sugerencia de ..

Pero no creo que sea una buena idea colocar mis claves SSH privadas en una carpeta pública, así que empecé a buscar dónde estaba el host conocido.

Entonces, si desea proteger correctamente su clave SSH, debe poner su clave en el siguiente directorio:

Para Windows 7, 8 y 8.1 de 32 bits:

C: \ Users \\ AppData \ Local \ VirtualStore \ Archivos de programa \ Git \

Para Windows 7, 8 y 8.1 de 64 bits:

C: \ Users \\ AppData \ Local \ VirtualStore \ Archivos de programa (x86) \ Git \


4
2017-09-08 10:04



Hola bas Creo que deberías borrar tu pregunta y preguntar o darla. Superusuario porque este es el sitio incorrecto para este tipo de pregunta / respuesta :-) - Ian Macintosh
No quistion de mí solo sugestion - Bas van den Dikkenberg
Esta fue la solución más simple en mi máquina Win7. Como tu, busqué known_hosts. Efectivamente, estaba en C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh. Al colocar mi archivo de clave (id_rsa) en ese directorio, ssh pudo encontrarlo sin queja. Hice una pequeña lectura: así es como Windows maneja el software (heredado) que intenta escribir en áreas prohibidas (como "C: \ Archivos de programa \"), por lo que la ssh de Git no es consciente de que esté escribiendo en el directorio VirtualStore, Windows es manejar eso de forma transparente. ¡Al menos estos archivos pertenecen a un usuario! - DaveGauer


En mi caso estaba usando Git para Windows en el contenedor Docker. windowsservercore.

Mi Git fue instalado por Chocolatey a C:\Program Files\Git.

Tuve que actualizar el archivo C:\Program Files\Git\etc\ssh\ssh_config con este:

Host example.com
   Identityfile ~/.ssh/id_rsa

Entonces pude usar la llave de C:\Users\<user>\.ssh\id_rsa

Si está utilizando Git para Windows junto con OpenSSH para Windows. Git sigue usando su propio ssh.

Además si planeas usar ssh-keyscan host.com > known_hosts de OpenSSH, tenga cuidado porque la salida de la tubería de stdout de keyscan (en Windows) cambia la codificación a UCS-2, pero OpenSSH puede leer solo UTF-8! Así que asegúrate de cambiar la known_hosts codificación de archivos.


4
2017-11-02 15:27



Esto ayudó, pero para cualquier persona que use una clave id_dsa, también deberá agregar "PubkeyAcceptedKeyTypes ssh-dss" en su host. - Michael Russo


Tuve problemas similares y ninguna de las respuestas aquí resolvió el problema. Resulta que mi par de claves se generó originalmente con una frase de contraseña vacía. (Lo sé, tonto.)

Una vez que creé un nuevo par de llaves y cargué la clave pública en GitHub, las cosas comenzaron a funcionar nuevamente.


2
2018-01-31 23:15



esta. ughhhhhhhhhhhhh. adios 2 horas - Scoop