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

489

Mi configuración de Git funciona bien en Linux, pero cuando trato de configurar las cosas en Windows (usando Git para Windows y TortoiseGit ), no sé dónde poner mi clave SSH privada (o, mejor aún, cómo saber sshdónde está situado). 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.

binario organico
fuente
Tengo el mismo problema, puedo ingresar a mi caja de desarrollo usando una clave pública como "root" usando el programa "Git Bash" que está instalado con "Git For Windows" pero no puedo iniciar sesión como "git" con mi clave a pesar de que he copiado mi archivo "autorizado_claves" de mi "raíz" a mi usuario "git" y configuré los propietarios y los permisos correctamente. ¿Por qué no puedo iniciar sesión como "git" cuando "root" funciona exactamente con el mismo archivo "autorizado_claves"? En cambio, para "git" pasa todas las claves privadas, que son exactamente las mismas que funcionan con "root" y pide una contraseña. Por cierto, este es un servidor Centos 5.5.
@fuzzy lollipop: ¿Tiene los permisos correctos en el archivo autorizado de claves de usuario de su 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

Respuestas:

486

Para Git Bash

Si está ejecutando msysgit (supongo que lo es) y está buscando ejecutar Git Bash (lo recomiendo sobre TortoiseGit, pero ahora me inclino por la CLI más que por la GUI), debe averiguar cuál es su directorio de inicio para Git Bash al iniciarlo y luego escribir pwd(en Windows 7, será algo así como C:\Users\phsrcreo). Mientras estés en Git Bash, deberías mkdir .ssh.

Después de tener el directorio de inicio, y una .sshcarpeta debajo de eso, desea abrir PuTTYgen y abrir la clave (archivo .ppk) que ha creado previamente. Una vez que su clave está abierta, desea seleccionarla Conversions -> Export OpenSSH keyy guardarla en HOME\.ssh\id_rsa. Después de tener la clave en esa ubicación, Git Bash reconocerá la clave y la usará.

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

Para tortuga

Al usar TortoiseGit, debe configurar la clave SSH a través de las instrucciones de pacey . Debe hacer eso para cada repositorio con el que esté utilizando TortoiseGit.

Dan McClain
fuente
44
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 ' t autentícate para clonar desde el origen. ¡Difícil!
Kylotan
43
Con GitBash descubrí que tenía que copiar mi ~/.ssh/id_rsaarchivo Program Files\Git\.ssh\id_rsa, lo cual era un poco confuso, pero ahora IntelliJ y Windows cmd pueden empujar a repositorios git que usan autenticación de clave.
JP.
77
Igualmente. Acabo de instalar git-for-windows, lo estoy ejecutando desde cmd.exe. Necesitaba poner los archivos id_rsay id_rsa.puben c:\program files (x86)\Git\.ssh. El .sshdirectorio ya estaba presente. Gracias JP.
Cheeso
55
El segundo párrafo era dorado. :)
Bjørn
44
@Damon: Debería estar id_rsasin la extensión. Ese es el nombre del archivo, no es un directorio
Dan McClain
107

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 instalación de Windows Vista , esto se haría emitiendo setx HOME c:\Users\admin\en la línea de comando.

Me alegró el día y solucionó el problema con Git, siempre que su clave privada no esté protegida por contraseña. Si desea usar ssh-agent, entonces probablemente pueda ejecutar ssh-agent cmd.exe (aunque nunca lo he hecho) y ssh-add como de costumbre.

Tenga en cuenta que se supone que todas las herramientas Git / SSH se ejecutan desde un cmd.exe para no parpadear una ventana.

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

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

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

  • Abra una ventana del explorador.
  • Abra el menú contextual y navegue TortoiseGitConfiguración
  • En la ventana ahora abierta, navegue a GitRemoto
  • Establezca la ruta a su clave PuTTY en el cuadro de entrada correspondiente.

A continuación se muestra una captura de pantalla:

Ingrese la descripción de la imagen aquí

pausado
fuente
8
Además, si necesita convertir su clave privada al formato '.ppk' desde otro formato, puede seguir ESTO
Tariq M Nasim
Funcionó para mi.
Maxim Eliseev
66
Git> Remote solo aparece una vez que ha clonado con éxito el repositorio.
Steve Pitchers
55
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 usado por git. Consulte stackoverflow.com/a/33328628/318317 De esa manera, solo necesita arreglar esto una vez.
Daniel Rose
50

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

  • Abra un indicador de Git Bash
  • Escriba 'ssh-keygen'
    • Aceptar la ubicación predeterminada
    • Elija una frase de contraseña en blanco (solo presione 'enter' para todas las preguntas ')
  • Ahora copie la clave pública en su servidor, por ejemplo: scp ~ / .ssh / id_rsa.pub [email protected]: ~

Eso es lo que hace tu propia computadora. Ahora sshen el servidor de destino, luego haga

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

¡Eso es! Ya terminaste! Desde Git Bash, haga lo siguiente para probar:

ssh [email protected] 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 usando su sitio web, por lo 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', 'Claves SSH y GPG', haga clic en 'Nueva clave SSH' y pegue la clave.
Hugh Perkins
fuente
8
No cree claves sin 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
14
Estás respondiendo la pregunta equivocada. La Q es cómo apuntar a una clave privada existente.
Orangutech
77
@GregB, lo veo así: cualquier servidor para el que creo 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 ;-) Entonces, en mi opinión, es tan seguro como la partición de inicio encriptada en mi computadora portátil, que es 'lo suficientemente buena' para asegurar el acceso a github. (¡lo cual puede variar de su opinión, por supuesto!)
Hugh Perkins
3
@GregB ¡No caigas en la paranoia! :] Claro, que usar claves protegidas con contraseña es mucho más seguro que usar sin contraseña, pero afirmar que la clave sin contraseña es tan fácil de romper como almacenar contraseñas en un archivo de texto es un falso obvio. He visto muchas guías que alientan a los usuarios a usar claves protegidas con contraseña, pero nunca he visto ningún reclamo, 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, ingresada por los usuarios, y la solicita cada vez que se utiliza la clave. Lo que hace que el uso de claves SSH no tenga sentido en esta situación.
trejder
44
Por el bien de la conversación, que se ha desviado de la pregunta original, las claves SSH son ciertamente más criptográficamente seguras 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 utilizando un agente SSH, que luego mantiene las claves descifradas en la memoria para que no necesite volver a ingresar la contraseña durante todo el día. Como comenta @Hugh Perkins, y estoy parafraseando, todos ustedes conocen sus requisitos de seguridad mejor que yo / nosotros :).
GregB
38

Si está utilizando msysgit con las herramientas OpenSSH, debe crear ~/.ssh/id_rsao crear una configuración de Git ~/.ssh/configque apunte a su clave.

Aquí hay un ejemplo de una configuración de Git para Bitbucket que usará el nombre de usuario correcto y una clave distinta de la predeterminada (en caso de que mantenga una clave para conexiones SSH y otra para cuentas 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 agente ssh de su sesión actual para evitar tener que escribir repetidamente la contraseña de la clave.

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

Acabo de establecer% HOME% =% HOMEPATH%

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

En Vista:

  1. Haga clic derecho en la computadora
  2. Elige 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 tipo de nombre de variable: INICIO
  7. Para el tipo de ruta variable:% HOMEPATH%
  8. Haga clic en Aceptar
Jono
fuente
66
En mi caso, agregué HOME =% USERPROFILE%
igor
1
Tenga en cuenta que %HOMEPATH%no contiene la letra de la unidad, por lo que si su fuente no C:está activada, C:debe anteponerlo %HOME%.
Graeme Perrow
set %HOME%=%HOMEPATH%¡trabajó para mi! ¡¡Gracias!!
teng
7

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

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

Declan Shanaghy
fuente
Dije 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 averiguar cómo. Si bien el cambio de software 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 en Linux. Pero la clave tiene que estar en su agente SSH. ¿hay un agent.exe o algo por el estilo?
Declan Shanaghy
1
Sí, la configuración fue fácil en el lado de Linux. Pero desafortunadamente tengo que hacerlo funcionar también 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 hacerlos. hacer nada. Simplemente abren y cierran una ventana de cmd de inmediato. Estoy perplejo.
binaryorganic
8
De hecho, el concurso me solucionó el problema: tengo un acceso directo en la carpeta de inicio ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) de mi menú de inicio ( ) "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 al inicio y esto hace que GIT "simplemente funcione": o)
Owen Blacker
@OwenBlacker OMFG! ¡ Definitivamente deberías escribir este comentario como una respuesta de tamaño completo ! ¡Esta es la única solución aquí , que realmente me ayudó y resolvió mi problema! ¡Lástima, que solo puedo darte +1! :]
trejder
6

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

My Git fue instalado por Chocolatey para C:\Program Files\Git.

Tuve que actualizar el archivo C:\Program Files\Git\etc\ssh\ssh_configcon esto:

Host example.com
   Identityfile ~/.ssh/id_rsa

Entonces podría usar la llave de C:\Users\<user>\.ssh\id_rsa

Si está utilizando Git para Windows junto con OpenSSH para Windows. Git todavía está usando el suyo ssh.

Además, si planea usar ssh-keyscan host.com > known_hostsdesde OpenSSH, tenga cuidado porque la salida de tubería stdoutde keyscan(en Windows) cambia la codificación a UCS-2, ¡pero OpenSSH solo puede leer UTF-8! Así que asegúrese de cambiar la known_hostscodificación del archivo.

oglop
fuente
Esto ayudó, pero para cualquiera que esté usando una clave id_dsa, también deberá agregar "PubkeyAcceptedKeyTypes ssh-dss" debajo de su host.
Michael Russo
4

OK, miré la sugerencia de ..

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

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

Para Windows 7, 8 y 8.1 de 32 bits:

C: \ Users \\ AppData \ Local \ VirtualStore \ Program Files \ Git \

Para Windows 7, 8 y 8.1 de 64 bits:

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

Bas van den Dikkenberg
fuente
Esta fue la solución más simple en mi máquina Win7. Como tú, lo busqué known_hosts. Efectivamente, estaba adentro 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 quejas. Leí un poco: así es como Windows maneja el software (heredado) que intenta escribir en áreas prohibidas (como "C: \ Archivos de programa \"), por lo que el ssh de Git no es completamente consciente de que está escribiendo en el directorio de VirtualStore, Windows está manejando eso de manera transparente. ¡Al menos estos archivos pertenecen a un usuario!
DaveGauer
4

La forma más eficiente es usar Pageant porque le permitirá escribir la frase de contraseña solo una vez al comienzo de la sesión en lugar de cada inserción. Todas las respuestas aquí fueron demasiado cortas, así que publicaré una guía detallada aquí:

  1. Descargar pageant.exe, puttygen.exe, putty.exey plink.exeel sitio web de la masilla. Colóquelos en el C:\puttyToolsdirectorio.
  2. Ejecutar puttygen.exe.
  3. Haga clic en el botón Generate.
  4. Mueva el mouse en la parte superior de la ventana hasta que la barra de progreso esté llena, ya que el programa le pide que lo haga.
  5. Proporcione una frase de contraseña y repítala en el cuadro de texto posterior.
  6. Haga clic en "Guardar clave privada". El directorio habitual para guardarlos es %USERPROFILE%\_ssh(en mi computadora esto se asigna a C:\Users\andres\.ssh\). No importa cómo llames la clave, pero para fines de demostración, la llamaré github.ppk. Este archivo debe tener una extensión de .ppk.
  7. Copie el texto en el cuadro de texto superior en PuTTYgen, el etiquetado Public key for pasting into OpenSSH authorized_keys filey péguelo en una nueva clave SSH en la configuración de GitHub. Déle un título que describa en qué máquina está la clave (por ejemplo, "Work laptop").
  8. Ejecutar pageant.exe, aparecerá un nuevo icono de bandeja del sistema.
  9. Haga clic derecho en el icono -> Agregar clave.
  10. Localice su archivo ppk, ingrese su frase de contraseña.
  11. Cree estas nuevas variables de entorno de usuario (buscando la aplicación a Environtravés de WindowsMenu que encontrará Edit environment variables for your account): GIT_SSH = "C:\puttyTools\plink.exe"ySVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. Abra putty.exe e intente conectarse al host donde aloja sus repositorios Git. Por ejemplo, intente conectarse a github.com a través de SSH, y un cuadro de diálogo le preguntará si acepta la huella digital del servidor: haga clic en SÍ.
  13. Ejecute una nueva instancia de su MINGW64consola Git y verifique que las variables de entorno estén allí escribiendo el comando env | grep -i ssh.
  14. Deberías estar listo. Intenta clonar con el protocolo Git + SSH de tu host.

(Originalmente extraído de estas dos guías que combiné en una: Cómo configurar Git para Windows y Configurar MinGW-W64 + MSYS para usar PuTTY Plink / Pageant ).

knocte
fuente
3

Al mezclar GitHub para Windows y Git GUI para Windows, puede encontrarse con problemas en los que Git GUI le solicita un nombre de usuario y una contraseña. La cura para esto es cambiar la URL remota de https:(que es lo que crea GitHub para Windows) al protocolo Git. En el .gitdirectorio en el archivo de configuración, busque:

[remote "origin"]
   url = https://github.com/**username**/**reponame**.git
   fetch = +refs/heads/*:refs/remotes/origin/*

Cámbielo a:

[remote "origin"]
    url = [email protected]:**username**/**reponame**.git
    fetch = +refs/heads/*:refs/remotes/origin/*
IDisposable
fuente
Sí, es muy molesto. Es natural y fácil clonar un repositorio con github para Windows GUI, pero cuando se usa git cui fuera de git shell falló. Me pregunto cómo funciona el comando git en el shell git con https url ...
hiroshi
para SSH es el prefijo siempre git@{SERVER URL}?
nmz787
Sí, hasta donde he visto :)
IDisposable
Ya tenía esto - todavía me pregunta todo el tiempo
Ian Grainger
3

La ubicación estándar para los archivos está en %USERPROFILE%\.ssh.

%USERPROFILE%es el equivalente de $ HOME en Unix (normalmente se asigna a algo así c:\users\youruserid).

Si está utilizando las herramientas SSH que vienen con Git, que son las herramientas estándar de estilo de línea de comando Unix, puede usar algo como mi script aquí para trabajar con ssh-agent en todos los shells.

Eric Blade
fuente
Para futuros lectores, no%USERPROFILE% is the equivalent of $HOME es el equivalente de . Una gran cantidad de mala actuación aplicaciones Linux portado a Windows convite t los dos el mismo correo, pero deberían no ser tratado de la misma. $HOME
Micah Zoltu
Micah, ¿puedes informar las diferencias de intención para eso? Además, incluso con una intención diferente, parecería que si todas las herramientas usan una como la otra, ¿no se convierte efectivamente en equivalente?
Eric Blade
Las herramientas que se usan %USERPROFILE%en Windows de la misma manera que $HOMEen Linux están violando las mejores prácticas / recomendaciones bien documentadas para el desarrollo de Windows (publicado por MS hace mucho tiempo y actualizado a lo largo del tiempo). Hay muchas herramientas que hacen esto, pero el argumento para seguirlas es muy parecido al argumento "X hace pipí en el grupo, por lo que nosotros también deberíamos hacerlo". USERPROFILEes donde el usuario almacena los documentos que crea / guarda (p. ej., guardar el diálogo) APPDATAes para datos de configuración por usuario. LOCALAPPDATAes para cachés por usuario y archivos grandes. PROGRAMDATAes para configuración de toda la máquina y caché.
Micah Zoltu
En general, las únicas herramientas que se comportan mal con el PERFIL DE USUARIO son herramientas escritas por desarrolladores de Linux y luego portadas a Windows. Como desarrollador, probablemente use muchos de estos, por lo que parece que "todos lo están haciendo", pero fuera del ecosistema de herramientas de desarrollo, la mayoría de las aplicaciones de Windows son buenos ciudadanos. Incluso Microsoft a veces comete el error de no poner las cosas en el lugar correcto (son una gran empresa), aunque en general cuando se lo indica, hacen un esfuerzo por resolver el problema y seguir las pautas del sistema operativo.
Micah Zoltu
1
(lo siento, StackExchange limita los caracteres en los comentarios). Aquí hay más detalles sobre las carpetas y una breve descripción de lo que contiene cada una. También hay otros recursos, incluidas las publicaciones de blog más consumibles, pero este ofrece la precisión más técnica: technet.microsoft.com/en-us/library/cc749104(v=ws.10).aspx
Micah Zoltu
2

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 claves y subí la clave pública a GitHub, las cosas comenzaron a funcionar nuevamente.

Eric Cloninger
fuente
1
esta. ughhhhhhhhhhhhh. adiós 2 horas
Scoop
1

La siguiente respuesta también se aplica a esta pregunta cuando se ejecuta ssh desde la cuenta de servicio de Windows: Jenkins (servicio de Windows) con Git sobre SSH

Alexander Pacha
fuente
Siguiendo el enlace que proporcionó, pude obtener mi configuración de Jenkins. Necesitaba establecer la variable de entorno HOME en la ruta del programa Git que contenía el directorio .ssh en el que creé mi clave SSH.
Spechal
1

Puede especificar tanto la ruta de acceso a la clave como el nombre del archivo de clave (en Ubuntu). Por ejemplo:

ssh -i /home/joe/.ssh/eui_rsa
jim
fuente
Esto resuelve absolutamente el problema y le permite almacenar sus claves donde quiera.
DaveGauer
La pregunta era específicamente sobre Windows. Tengo git en mi máquina Ubuntu que funciona así, pero no puedo decir qué configurar GIT_SSH_COMMANDen mi máquina Windows.
mjaggard
1

Pageant (un agente SSH suministrado con el paquete PuTTY ) me soluciona el problema.

Tengo un acceso directo en la carpeta Inicio de mi menú de inicio ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) que apunta "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", de modo que carga mis claves SSH al inicio y esto hace que Git "simplemente funcione": o)

Owen Blacker
fuente
44
Creo que necesita varias otras configuraciones correctas para que esto funcione (como GIT_SSH configurado en TortoisePLink.exe, creo), y aunque ha funcionado para mí en el pasado, a menudo tengo problemas con él en otras máquinas. :-(
Simon East
Obtengo 'No se puede abrir el archivo' del concurso :( Que sé que está configurado correctamente porque lo estoy usando para TortoiseGit :(
Ian Grainger
1

Muchas respuestas dicen esto, ¡pero para mí no lo suficientemente rápido!

en Windows usando msys (consola estándar de Windows) C:\Users\{you}\.ssh\id_rsa

Básicamente no se molesta en escanear las claves instaladas (al menos no en mi nueva computadora portátil) y, por lo tanto, necesita específicamente id_rsa

Encontré esto con ganas de clonar algunos repositorios de trabajo privados en ruby ​​MSYS CLI para Windows 10 de 64 bits

MrMesees
fuente
0

Si tiene Windows 7/8, debería buscar en C: \ Users \ Your_User_Name.ssh. Simplemente copie y pegue su archivo id_rsa aquí y todo saldrá de la caja.

eeree
fuente
0

Un error que cometí al usar SSH en Windows fue que cuando intenté usar las teclas a través del cliente Git Bash, todos los archivos dentro de ~ / .ssh tenían los permisos incorrectos, sin embargo, no intentaron decirme que era un problema.

Solo como prueba, asegúrese de haber configurado todo en su directorio ~ / .ssh en chmod 600.

Spedge
fuente
0

Si tiene los permisos necesarios en la máquina Windows y sus políticas lo permiten, le sugiero que instale Cygwin ( https://cygwin.com/ ), especialmente teniendo en cuenta que tiene experiencia previa con Linux. Cygwin hará posible manejar sus claves ssh como lo haría en cualquier otra máquina Linux / Unix. Y proporciona acceso a casi todas las herramientas cli de Linux.

torbenl
fuente
1
Es perfectamente razonable hacer sugerencias como esta como comentarios. Pero como la pregunta solicita explícitamente git para windows, debe esperar votos negativos para publicar esto como respuesta.
robar
0

TortoiseGit le permite especificar la clave que se usará al clonar un repositorio. Simplemente marque "Cargar clave de masilla" y busque el .ppkarchivo, como en la captura de pantalla:https://i.stack.imgur.com/lAyzT.png

NGNeer
fuente
Si está deshabilitado, la verificación Settings... -> Network -> SSH clientestá configurada enC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
Nikita Bosik el
0

He solucionado el problema anterior creando

~ / .ssh / config

archivar y poner:

IdentityFile C:\Users\adria\.ssh\mysshkey
Adrian Onu
fuente
0

Al leer su comentario a la respuesta de Declan, intente abrir un símbolo del sistema primero (Inicio → Ejecutarcmd ) y luego navegue a esa carpeta git / bin y ejecute ssh-keygen. Teóricamente, eso generará una clave RSA y la colocará en el directorio apropiado. Entonces solo tienes que encontrarlo y compartir tu clave pública con el mundo.

La razón por la que la ventana "parpadea" es porque Windows ejecuta el programa, y ​​cuando se ejecuta, cierra el símbolo del sistema, pensando que ya ha terminado, cuando realmente necesita la salida.

naydichev
fuente
0

Usando v0.17 de Git Gui en Windows, hice clic en el siguiente comando de menú: AyudaMostrar clave SSH .

Aparece un cuadro de diálogo titulado Su clave pública OpenSSH . Generé una clave y la copié en el portapapeles. Luego seguí las instrucciones de instalación-ssh en githelp desde el Paso Tres en adelante. Luego, Git Gui se comunicó con GitHub en silencio, sin necesidad de ingresar ninguna credencial.

snow6oy
fuente
0

En mi sistema Windows 7, Git Gui busca la clave RSA en la userprofile/.sshcarpeta o más específicamente c:/users/yourusername/.ssh/.

La parte difícil de mi configuración fue conseguir que el host compartido en hostmonster aceptara la clave. La única forma en que pude hacerlo funcionar fue usando Git Gui para crear los pares de claves (sin contraseña) y luego copiar y pegar la clave pública a través del panel de control, ssh, administrar claves.

Para comenzar desde el principio, debe crear las claves en Git Gui yendo al menú Ayuda , Mostrar clave SSH y luego Generar clave . Ahora tendrá dos nuevas claves en el .sshdirectorio. Abra el .pubarchivo y copie el contenido.

Inicie sesión en su panel de control en el host compartido y vaya a SSH , Administrar claves SSH e Importar clave . Pega en el cuadro Público y asegúrate de nombrarlo con el nombre correcto sin la extensión: el mío era id_rsa. Ahora debe autorizar la clave utilizando el enlace de autorización de administración, para que se concatene en el authorized_keysarchivo.

Ahora tu Git Gui y tu Git Bash deberían poder usar SSH sin tener que escribir la contraseña. Curiosamente, pude usar SSH a través de Git Bash y Git Gui en mis propios servidores con Linux, fue solo el alojamiento compartido lo que me dio los ajustes. Espero que esto ayude a alguien, ya que me llevó horas de prueba y error encontrar esto, ¡y es muy simple!

usuario228414
fuente
0

Si está utilizando la línea de comando Git para Windows, puede hacer lo siguiente:

Abrir cmd.exey ejecutar setx HOME c:\PATH_TO_PRIVATE_KEY.

Cree una nueva carpeta, .ssh(si no existe) dentro c:\PATH_TO_PRIVATE_KEYy copie su id_rsaarchivo (su clave privada) en ella.

Hecho. Ahora puede usar la línea de comando Git normalmente.

duccom
fuente
0

Mi experiencia con msysgit OpenSSL / Bash Git (no el tintineo de PuTTY) es que el orden de búsqueda para la .ssh/carpeta es el siguiente.

  1. %HOME%/.ssh/
  2. %HOMEDRIVE%%HOMEPATH%/.ssh/
  3. %USERPROFILE%/.ssh/

Por lo tanto, por qué tanta gente sugiere configurar HOMEsi uno de los otros no es lo que espera. Más importante aún, puede verificarlo usted mismo; para depurar el uso ssh -ven un servidor que usa autenticación de clave pública de la siguiente manera:

$ ssh -v [email protected]
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /d/.ssh/config
...
debug1: identity file /d/.ssh/identity type -1
debug1: identity file /d/.ssh/id_rsa type 1
debug1: identity file /d/.ssh/id_dsa type -1
...
debug1: Next authentication method: publickey
debug1: Trying private key: /d/.ssh/identity
debug1: Offering public key: /d/.ssh/id_rsa
..
Hi kcd83! You've successfully authenticated, but GitHub does not provide shell access.

Encontramos la sshbúsqueda en un disco oscuro y ninguna de las respuestas anteriores parecía explicar lo que vimos.

A veces %HOMEDRIVE%%HOMEPATH%es una unidad de red asignada (por ejemplo H:/) que causa fallas innecesarias cuando hay problemas de red / servidor de archivos, incluso cuando %USERPROFILE%/.sshes C:/Users/Username/.sshy tiene las claves localmente. La configuración %HOME%en lo %USERPROFILE%detiene mirando el disco remoto de la casa.

KCD
fuente
0

También puede cargar el Agente PuTTY (concurso) y agregar la clave privada que generó con PuTTY para el servidor.

Git reconoce esto y lo usa para empujar / tirar.

deepakkt
fuente
0

Estaba usando TortoiseGit y Git Bash en Windows, dependiendo de la necesidad. He agregado todo a TortoiseGit, y funcionó bien, pero Git Bash no lo recogió a pesar de que las claves estaban en el directorio correcto. Resulta que tuve que hacer esto desde Git Bash:

ssh-add C:\\Users\\<YOUR_USER>\\.ssh\\id_rsa

Por supuesto, puede cambiar la ruta a donde se encuentre su clave, recordando usarla \\como separador.

Vlad Schnakovszki
fuente
0

Si usa Git para Windows, una vez que se han generado las claves SSH, debe agregar su clave SSH a ssh-agent.

Consulte Generar una nueva clave SSH y agregarla al agente ssh .

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa
Matoeil
fuente
Bienvenido a Server Fault. Esta pregunta ya tiene una respuesta ampliamente aceptada, aceptada hace varios años. Siga buscando nuevas preguntas o aquellas que puedan mejorarse significativamente.
Matthew Wetmore
1
la respuesta ampliamente aceptada no funcionó para mí, mientras que esta sí. Creo que podría ayudar a alguien saber que la clave debe agregarse al agente ssh y se puede hacer con 2 líneas de instrucciones
Matoeil,