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 ssh
dó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.
489
Respuestas:
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í comoC:\Users\phsr
creo). Mientras estés en Git Bash, deberíasmkdir .ssh
.Después de tener el directorio de inicio, y una
.ssh
carpeta debajo de eso, desea abrir PuTTYgen y abrir la clave (archivo .ppk) que ha creado previamente. Una vez que su clave está abierta, desea seleccionarlaConversions -> Export OpenSSH key
y guardarla enHOME\.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
(oProgram 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.
fuente
~/.ssh/id_rsa
archivoProgram 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.id_rsa
yid_rsa.pub
enc:\program files (x86)\Git\.ssh
. El.ssh
directorio ya estaba presente. Gracias JP.id_rsa
sin la extensión. Ese es el nombre del archivo, no es un directorioAl 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.
fuente
setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use
cmd` en su lugar.GIT_SSH=c:\pathto\plink.exe
Puede especificar la ubicación clave para TortoiseGit de la siguiente manera:
A continuación se muestra una captura de pantalla:
fuente
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.
Eso es lo que hace tu propia computadora. Ahora
ssh
en el servidor de destino, luego haga¡Eso es! Ya terminaste! Desde Git Bash, haga lo siguiente para probar:
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:
fuente
Si está utilizando msysgit con las herramientas OpenSSH, debe crear
~/.ssh/id_rsa
o crear una configuración de Git~/.ssh/config
que 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 :
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.
fuente
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:
fuente
%HOMEPATH%
no contiene la letra de la unidad, por lo que si su fuente noC:
está activada,C:
debe anteponerlo%HOME%
.set %HOME%=%HOMEPATH%
¡trabajó para mi! ¡¡Gracias!!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
fuente
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)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_config
con esto: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_hosts
desde OpenSSH, tenga cuidado porque la salida de tuberíastdout
dekeyscan
(en Windows) cambia la codificación a UCS-2, ¡pero OpenSSH solo puede leer UTF-8! Así que asegúrese de cambiar laknown_hosts
codificación del archivo.fuente
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:
Para Windows 7, 8 y 8.1 de 64 bits:
fuente
known_hosts
. Efectivamente, estaba adentroC:\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!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í:
pageant.exe
,puttygen.exe
,putty.exe
yplink.exe
el sitio web de la masilla. Colóquelos en elC:\puttyTools
directorio.puttygen.exe
.%USERPROFILE%\_ssh
(en mi computadora esto se asigna aC:\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.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").pageant.exe
, aparecerá un nuevo icono de bandeja del sistema.Environ
través de WindowsMenu que encontraráEdit environment variables for your account
):GIT_SSH = "C:\puttyTools\plink.exe"
ySVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
MINGW64
consola Git y verifique que las variables de entorno estén allí escribiendo el comandoenv | grep -i ssh
.(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 ).
fuente
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.git
directorio en el archivo de configuración, busque:Cámbielo a:
fuente
git@{SERVER URL}
?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.
fuente
%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
%USERPROFILE%
en Windows de la misma manera que$HOME
en 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".USERPROFILE
es donde el usuario almacena los documentos que crea / guarda (p. ej., guardar el diálogo)APPDATA
es para datos de configuración por usuario.LOCALAPPDATA
es para cachés por usuario y archivos grandes.PROGRAMDATA
es para configuración de toda la máquina y caché.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.
fuente
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
fuente
Puede especificar tanto la ruta de acceso a la clave como el nombre del archivo de clave (en Ubuntu). Por ejemplo:
fuente
GIT_SSH_COMMAND
en mi máquina Windows.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)fuente
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
fuente
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.
fuente
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.
fuente
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.
fuente
TortoiseGit le permite especificar la clave que se usará al clonar un repositorio. Simplemente marque "Cargar clave de masilla" y busque el
.ppk
archivo, como en la captura de pantalla:fuente
Settings... -> Network -> SSH client
está configurada enC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
He solucionado el problema anterior creando
archivar y poner:
fuente
Al leer su comentario a la respuesta de Declan, intente abrir un símbolo del sistema primero (Inicio → Ejecutar → cmd ) 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.
fuente
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 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.
fuente
En mi sistema Windows 7, Git Gui busca la clave RSA en la
userprofile/.ssh
carpeta o más específicamentec:/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
.ssh
directorio. Abra el.pub
archivo 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 elauthorized_keys
archivo.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!
fuente
Si está utilizando la línea de comando Git para Windows, puede hacer lo siguiente:
Abrir
cmd.exe
y ejecutarsetx HOME c:\PATH_TO_PRIVATE_KEY
.Cree una nueva carpeta,
.ssh
(si no existe) dentroc:\PATH_TO_PRIVATE_KEY
y copie suid_rsa
archivo (su clave privada) en ella.Hecho. Ahora puede usar la línea de comando Git normalmente.
fuente
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.%HOME%/.ssh/
%HOMEDRIVE%%HOMEPATH%/.ssh/
%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 el usossh -v
en un servidor que usa autenticación de clave pública de la siguiente manera:Encontramos la
ssh
bú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 ejemploH:/
) que causa fallas innecesarias cuando hay problemas de red / servidor de archivos, incluso cuando%USERPROFILE%/.ssh
esC:/Users/Username/.ssh
y tiene las claves localmente. La configuración%HOME%
en lo%USERPROFILE%
detiene mirando el disco remoto de la casa.fuente
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.
fuente
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:
Por supuesto, puede cambiar la ruta a donde se encuentre su clave, recordando usarla
\\
como separador.fuente
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 .
fuente