it-swarm-es.com

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

Mi configuración de Git funciona bien en Linux, pero cuando intento configurar las cosas en Windows (usando Git para Windows y TortoiseGit ), no sé dónde poner mi clave SSH privada (o, mejor aún así, cómo decirle a ssh dónde está ubicado). Estoy usando la opción ssh.exe estándar 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.

503
binaryorganic

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, luego escriba pwd (creo que en Windows 7 será algo así como C:\Users\phsr Creo). Mientras estés en Git Bash, deberías mkdir .ssh.

Después de tener el directorio de inicio, y una carpeta .ssh Debajo de eso, desea abrir PuTTYgen y abrir la clave (archivo .ppk) que ha creado previamente. Una vez que su clave está abierta, desea seleccionar Conversions -> Export OpenSSH key Y 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 instrucciones de pacey . Debe hacer eso para cada repositorio con el que esté utilizando TortoiseGit.

493
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 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 de 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.

108
Oct

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:

Enter image description here

57
pacey

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 ssh en 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 lo siguiente:

  • 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.
51
Hugh Perkins

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

Aquí hay un ejemplo de una configuración de Git para Bitbucket que utilizará el nombre de usuario correcto y una clave distinta de la clave 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
42
GregB

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
16
Jono

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 podría usar la clave de C:\Users\<user>\.ssh\id_rsa

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

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

9
oglop

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

7
Declan Shanaghy

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 como 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.

4
Eric Blade

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 Push. Todas las respuestas aquí fueron demasiado cortas, así que publicaré una guía detallada aquí:

  1. Descargar pageant.exe, puttygen.exe, PuTTY.exe y plink.exe del sitio web de PuTTY. Colóquelos en C:\puttyTools directorio.
  2. Correr 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 file y 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. Correr 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 Environ a través de WindowsMenu que encontrará Edit environment variables for your account): GIT_SSH = "C:\puttyTools\plink.exe" y SVN_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 MINGW64 Git console, y verifica que las variables de entorno estén ahí escribiendo el comando env | grep -i ssh.
  14. Deberías estar listo. Intente clonar con el protocolo Git + SSH desde su host.

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

4
knocte

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 \

3

Al mezclar GitHub para Windows y Git GUI para Windows, puede encontrarse con problemas en los que Git GUI sigue pidiéndole un nombre de usuario y 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 .git directorio 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/*
3
IDisposable

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.

2
Eric Cloninger

He solucionado el problema anterior creando

~/.ssh/config

archivar y poner:

IdentityFile C:\Users\adria\.ssh\mysshkey
2
Adrian Onu

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

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", de modo que carga mis claves SSH al inicio y esto hace que Git "simplemente funcione": o)

1
Owen Blacker

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

1
Alexander Pacha

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
1
jim

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

1
MrMesees

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
0
Matoeil

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.

0
naydichev

Si está en 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.

0
eeree

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.

0
Spedge

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 Push/pull.

0
deepakkt

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.

0
torbenl

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 usar \\ como separador.

0

En mi sistema Windows 7, Git Gui busca la clave RSA en el userprofile/.ssh carpeta 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, luego Generar clave. Ahora tendrá dos nuevas claves en el .ssh directorio. Abre el .pub archivar y copiar los contenidos.

Inicie sesión en su panel de control en el Host compartido y vaya a SSH , Administrar claves SSH, y Clave de importación. Pegue en el cuadro Público, y asegúrese de asignarle 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_keys archivo.

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

0
user228414

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

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

Por lo tanto, por qué tanta gente sugiere configurar HOME si uno de los otros no es lo que espera. Más importante aún, puede verificarlo usted mismo; para depurar use ssh -v a un servidor que utiliza la 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 ssh buscando 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%/.ssh es C:/Users/Username/.ssh y tiene las claves localmente. Ajuste %HOME% a %USERPROFILE% lo detiene mirando la unidad de inicio remota.

0
KCD

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

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

0
snow6oy

Al usar Windows 10, no pude hacer que funcionara la clave SSH generada por el concurso (al menos para Git en la línea de comando, usando SourceTree no tuve un problema) al ejecutar:

git Push Origin master

Entonces mi solución:

  1. Abrí 'Git Bash'
  2. Corrió

    ssh-keygen
    
  3. Las llaves confirmadas ahora existen

    ls ~/.ssh
    
  4. Abrió id_rsa.pub en Notepad ++, seleccionó todos los contenidos

  5. Se agregó una nueva clave en Bitbucket, https://bitbucket.org/account/user/myusername/ssh-keys/

  6. Contenido etiquetado y pegado en el campo clave -> Agregar clave

Después de eso, la línea de comando Git funcionó. Parece que quiere el antiguo formato PEM, porque si trato de importar esta clave en el concurso, lo dice.

0
HostMyBus

TortoiseGit le permite especificar la clave a utilizar al clonar un repositorio. Simplemente marque "Cargar clave PuTTY" y busque el .ppk archivo, como en la captura de pantalla: https://i.stack.imgur.com/lAyzT.png

0
NGNeer

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

Abierto cmd.exe y ejecuta setx HOME c:\PATH_TO_PRIVATE_KEY.

Crear una nueva carpeta, .ssh, (si no existe) dentro de c:\PATH_TO_PRIVATE_KEY y copia tu id_rsa archivo (su clave privada) en él.

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

0
duccom