Como digo ao Git for Windows onde encontrar minha chave RSA privada?

487

Minha configuração do Git funciona bem no Linux, mas quando tento configurar as coisas no Windows (usando o Git for Windows e o TortoiseGit ), não sei onde colocar minha chave SSH privada (ou, melhor ainda, como saber sshonde está) localizado). Estou usando a opção ssh.exe padrão durante a instalação do Git para Windows. A instalação funciona bem se eu permitir autenticação por senha (em vez do RSA) no servidor.

binário-orgânico
fonte
Eu tenho o mesmo problema, posso ssh na minha caixa de desenvolvimento usando uma chave pública como "root" usando o programa "Git Bash" instalado com o "Git For Windows", mas não consigo fazer login como "git" com o meu chave mesmo que eu tenha copiado meu arquivo "allowed_keys" do meu "root" para o meu usuário "git" e defina os proprietários e permissões corretamente. Por que não consigo fazer login como "git" quando "root" funciona exatamente com o mesmo arquivo "allowed_keys". Em vez de "git", ele passa todas as chaves privadas, exatamente as mesmas que funcionam com "root" e solicita uma senha. A propósito, este é um servidor Centos 5.5.
@ pirulito difuso: Você tem as permissões corretas no arquivo author_keys do seu usuário git? Deve ser chmod 600 e pertencer ao usuário git. Se ele é de propriedade do usuário root, ele não vai funcionar
Dan McClain
sim todos os arquivos e diretórios são os proprietários corretos e permissões

Respostas:

486

Para Git Bash

Se você estiver executando o msysgit (suponho que esteja) e estiver olhando para executar o Git Bash (eu o recomendo no TortoiseGit, mas eu me inclino para a CLI mais do que a GUI agora), você precisa descobrir qual é o diretório inicial do Git Bash, iniciando-o e digite pwd(no Windows 7, será algo como C:\Users\phsreu acho). Enquanto estiver no Git Bash, você deveria mkdir .ssh.

Depois de ter o diretório inicial e uma .sshpasta abaixo dele, você deseja abrir o PuTTYgen e abrir a chave (arquivo .ppk) que você criou anteriormente. Depois que sua chave estiver aberta, você deseja selecionar Conversions -> Export OpenSSH keye salvá-la em HOME\.ssh\id_rsa. Depois de ter a chave nesse local, o Git Bash reconhecerá a chave e a usará.

Nota: os comentários indicam que isso não funciona em todos os casos. Pode ser necessário copiar a chave do OpenSSH para Program Files\Git\.ssh\id_rsa(ou Program Files (x86)\Git\.ssh\id_rsa).

Para TortoiseGit

Ao usar o TortoiseGit, você precisa definir a chave SSH através das instruções do ritmo . Você precisa fazer isso para todos os repositórios com os quais você está usando o TortoiseGit.

Dan McClain
fonte
4
as instruções do ritmo para o tortoisegit não funcionarão até que você tenha o repositório (porque a configuração 'remota' não aparece a menos que você atue em um repositório) e, provavelmente, não é possível obtê-lo em primeiro lugar ' Não se autentique para clonar a partir da origem. Complicado!
Kylotan 6/10
43
Com o GitBash, descobri que tinha que copiar meu ~/.ssh/id_rsaarquivo Program Files\Git\.ssh\id_rsa- o que era um pouco confuso, mas agora o IntelliJ e o Windows cmd podem enviar repositórios git que usam autenticação de chave.
JP.
7
Da mesma forma. Acabei de instalar o git-for-windows, estou executando-o no cmd.exe. Eu precisava colocar os arquivos id_rsae id_rsa.pubdentro dele c:\program files (x86)\Git\.ssh. O .sshdir já estava presente. Obrigado JP.
Cheeso 26/07
5
O segundo parágrafo foi de ouro. :)
Bjørn
4
@ Damon: Deve ser id_rsasem a extensão. Que é o nome do arquivo, não é um diretório
Dan McClain
107

Usando o cliente SSH interno fornecido com o Git for Windows, você precisa configurar a variável de ambiente HOME para que o cliente Git SSH possa encontrar a chave.

Por exemplo, em uma instalação do Windows Vista , isso seria feito emitindo setx HOME c:\Users\admin\na linha de comando.

Ele fez o meu dia e corrigiu o problema com o Git, desde que sua chave privada não seja protegida por senha. Se você quiser usar o ssh-agent, provavelmente poderá executar o ssh-agent cmd.exe (embora eu nunca tenha feito isso) e o ssh-add como de costume.

Observe que todas as ferramentas Git / SSH devem ser executadas em um cmd.exe para não piscar uma janela.

Se isso não funcionar corretamente, o uso do plink provavelmente poderá ser alcançado com o ajuste do GIT_SSH . Consulte todos os tutoriais do SVN + ssh; este é basicamente o mesmo encanamento que você precisa configurar.

Out
fonte
16
Era isso que eu procurava, pois estou tentando usar o prompt de comando do Windows, e não o git bash.
John Ruiz
Correção agradável e fácil, mas teria sido difícil descobrir sem isso!
Thaddeusmt
Importante é também não ter espaços em branco entre HOME = e c: \ ... A solução de Oct fez o truque para mim. :-)
Lutz
2
O setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use cmd` em vez disso.
Trejder
2
+1GIT_SSH=c:\pathto\plink.exe
Nick Grealy
54

Você pode especificar o local principal do TortoiseGit da seguinte maneira:

  • Abra uma janela do Explorer.
  • Abra o menu de contexto e navegue no TortoiseGitConfigurações
  • Na janela agora aberta, navegue até GitRemoto
  • Defina o caminho para sua chave PuTTY na caixa de entrada correspondente.

Uma captura de tela está abaixo:

Digite a descrição da imagem aqui

ritmo
fonte
8
Além disso, se você precisar converter sua chave privada para o formato '.ppk' de outro formato, você pode seguir ISSO
Tariq M Nasim
Funcionou para mim.
Maxim Eliseev 10/09
6
O Git> Remote aparece somente depois que você clona com sucesso o repositório.
Steve jarros
5
Uma solução muito mais fácil é configurar tudo funcionando corretamente no git (usando o openSSH) e depois instruir o TortoiseGit a usar o ssh.exe usado pelo git. Consulte stackoverflow.com/a/33328628/318317 Dessa forma, você só precisa corrigir isso uma vez.
Daniel Rose
50

Nenhuma das respostas anteriores funcionou para mim. Aqui estava o que funcionou para mim no final. Na verdade, é bastante simples, se você souber o que digitar. Não precisa de PuTTY.

  • Abra um prompt do Git Bash
  • Digite 'ssh-keygen'
    • Aceite o local padrão
    • Escolha uma senha em branco (basta pressionar 'enter' para todas as perguntas ')
  • Agora copie a chave pública para o seu servidor, por exemplo: scp ~ / .ssh / id_rsa.pub [email protected]: ~

Essa é a parte do seu computador feita. Agora sshno servidor de destino, faça

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

É isso aí! Você Terminou! No Git Bash, faça o seguinte para testar:

ssh [email protected] ls

Se ele listar os arquivos em seu diretório pessoal no servidor Git, e pronto!

Para o GitHub, você não tem acesso de shell ao servidor deles, mas pode fazer o upload da chave usando o site deles; portanto, para o bit 'agora copie para o servidor', faça:

  • No Git Bash, digite 'cat ~ / .ssh / id_rsa.pub', selecione o resultado e copie-o para a área de transferência.
  • No site do GitHub, vá para 'Configurações da conta', 'Chaves SSH e GPG', clique em 'Nova chave SSH' e cole a chave.
Hugh Perkins
fonte
8
Não crie chaves sem senhas. É como colocar sua senha em um arquivo de texto, exceto que todo mundo sabe o local padrão das chaves privadas.
GregB
14
Você está respondendo a pergunta errada. O Q é como apontar para uma chave privada existente.
Orangutech
7
@ GregB, eu vejo assim: qualquer servidor para o qual eu crio uma chave sem senha é tão seguro quanto meu laptop, é uma extensão do perímetro de segurança do meu laptop. Na verdade, nem mesmo, já que meu diretório pessoal é criptografado ;-) Portanto, é tão seguro quanto a partição pessoal criptografada no meu laptop, o que é 'suficientemente bom' para garantir o acesso ao github, na minha opinião. (que pode variar de sua opinião, é claro!)
Hugh Perkins
3
@GregB Não caia na paranóia! :] É claro que o uso de chaves protegidas por senha é muito mais seguro do que o uso de menos senha, mas alegar que a chave sem senha é tão fácil de quebrar quanto o armazenamento de senhas em um arquivo de texto é um falso óbvio. Eu já vi muitos guias que incentivam os usuários a usar chaves protegidas por senha, mas nunca vi nenhuma alegação de que usá-los sem senhas não seja seguro. Mais: alguns sistemas não suportam soluções para lembrar a senha da chave, inserida pelos usuários, e solicita-a, sempre que a chave é usada. O que torna inútil o uso de chaves SSH nessa situação.
Trejder
4
Para o bem da conversa, que se desvia da pergunta original, as chaves SSH são certamente mais criptograficamente seguras que as senhas, mas essa segurança é posta em risco por não criptografar suas chaves SSH. Minha abordagem pessoal é desbloquear minhas chaves no início do dia usando um agente SSH, que mantém as chaves descriptografadas na memória para que eu não precise redigitar a senha ao longo do dia. Como comenta @Hugh Perkins, e estou parafraseando, todos vocês conhecem seus requisitos de segurança melhor do que eu / nós :).
GregB
38

Se você estiver usando o msysgit com as ferramentas OpenSSH, precisará criar ~/.ssh/id_rsaou criar uma configuração do Git na ~/.ssh/configqual aponte para sua chave.

Aqui está um exemplo de uma configuração do Git para o Bitbucket que usará o nome de usuário correto e uma chave que não seja a chave padrão (caso você mantenha uma chave para conexões SSH e outra para contas Git).

~ / .ssh / config :

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

Uma vez no Git Bash, você pode executar dois comandos para adicionar sua chave ao ssh-agent da sua sessão atual, para evitar ter que digitar repetidamente a senha da chave.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key
GregB
fonte
1
Eu fiz isso, mas para o github.com: Host github.com IdentityFile ~ / .ssh / github_rsa #
Sarah Vessels
1
Se você tem um espaço em seu caminho que você tem que usar aspas: IdentityFile "/ C / My Chaves / key"
r03
Eu prefiro desta forma, porque isso permitiu-me rápido conectar existia chaves de outro PC
Kirill Gusyatin
Meu .gitconfig possui seções. Sob quais seções devo colocar esses hosts?
precisa
16

Acabei de definir% HOME% =% HOMEPATH%

Isso tem a vantagem de funcionar para todos os usuários conectados ao sistema (cada um deles recebe pastas .ssh separadas).

No Vista:

  1. Clique com o botão direito do mouse em Computador
  2. Escolha Propriedades
  3. Clique em Configurações avançadas do sistema
  4. Clique em Variáveis ​​de ambiente
  5. Na seção inferior (Variáveis ​​do sistema), clique em Novo
  6. Para Nome da variável, digite: HOME
  7. Para tipo de caminho variável:% HOMEPATH%
  8. Clique OK
Jono
fonte
6
No meu caso, adicionei HOME =% USERPROFILE%
igor 14/10
1
Observe que %HOMEPATH%não contém a letra da unidade; portanto, se sua fonte não estiver, C:você precisará anexá C:-la %HOME%.
Graeme Perrow
set %HOME%=%HOMEPATH%trabalhou para mim! Obrigado!!
teng
7

Sua chave privada precisa ser adicionada ao agente SSH em sua estação de trabalho. Como você pode conseguir isso depende do cliente git que você está usando, por mais que o puTTY e seu agente associado (concurso) possam fazer o truque para você, aqui está o link para os binários e fontes oficiais:

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

Declan Shanaghy
fonte
Eu afirmei acima que estou usando o Git para Windows e o ssh.exe (empacotado com git) em vez de massa. Deve haver alguma prática padrão para adicionar uma chave privada, mas não consigo descobrir como. Embora a troca de software possa realmente me permitir fazer login, tem que haver uma maneira de fazer isso com a configuração padrão do Git, não?
Binaryorganic
Desculpe, eu não trabalho no Windows, apenas Linux. Mas a chave precisa estar no seu agente SSH. existe um agent.exe ou algo nesse sentido?
Declan Shanaghy 25/10/10
1
Sim, a instalação foi o bolo do lado do Linux. Infelizmente, tenho que fazê-lo funcionar no Windows também. Existem vários arquivos executáveis ​​relacionados ao ssh na pasta git / bin na caixa do Windows (ssh, ssh-add, ssh-agent, ssh-keygen e ssh-keyscan), mas não sei como criar nenhum deles faça qualquer coisa. Eles apenas piscam para abrir e fechar uma janela de cmd imediatamente. Estou perplexo.
binaryorganic 26/10/10
8
O concurso realmente resolve o problema para mim - eu tenho um atalho na pasta Inicialização do menu Iniciar ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) apontando para "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 ele carregue minhas chaves SSH na inicialização e isso faça o GIT "simplesmente funcionar": o)
Owen Blacker
@OwenBlacker OMFG! Você definitivamente deve escrever este comentário como uma resposta em tamanho real ! Esta é a única solução aqui , que realmente me ajudou e resolveu meu problema! Pena que eu posso te dar apenas +1! :]
Trejder
6

No meu caso, eu estava usando o Git for Windows no contêiner do Docker windowsservercore.

Meu Git foi instalado pelo Chocolatey para C:\Program Files\Git.

Eu tive que atualizar o arquivo C:\Program Files\Git\etc\ssh\ssh_configcom isso:

Host example.com
   Identityfile ~/.ssh/id_rsa

Então eu poderia usar a chave de C:\Users\<user>\.ssh\id_rsa

Se você estiver usando o Git for windows junto com o OpenSSH para Windows. O Git ainda está usando o seu próprio ssh.

Além disso, se você planeja usar o ssh-keyscan host.com > known_hostsOpenSSH, tenha cuidado, pois a saída da tubulação stdoutde keyscan(no Windows) altera a codificação para UCS-2, mas o OpenSSH pode ler apenas UTF-8! Portanto, certifique-se de alterar a known_hostscodificação do arquivo.

oglop
fonte
Isso ajudou, mas para quem estiver usando uma chave id_dsa, você também precisará adicionar "PubkeyAcceptedKeyTypes ssh-dss" em seu host.
Michael Russo
4

OK, olhei para a sugestão de ..

Mas colocar minhas chaves SSH privadas na pasta pública não foi uma boa ideia, então comecei a procurar onde estava o host conhecido.

Portanto, se você deseja proteger corretamente sua chave SSH, coloque-a no seguinte diretório:

Para Windows 7, 8 e 8.1 de 32 bits:

C: \ Usuários \\ AppData \ Local \ VirtualStore \ Arquivos de Programas \ Git \

Para Windows 7, 8 e 8.1 de 64 bits:

C: \ Usuários \\ AppData \ Local \ VirtualStore \ Arquivos de Programas (x86) \ Git \

Bas van den Dikkenberg
fonte
Esta foi a solução mais simples na minha máquina Win7. Como você, eu procurei known_hosts. Com certeza, estava dentro C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh. Ao colocar meu arquivo de chave (id_rsa) nesse diretório, o ssh conseguiu encontrá-lo sem reclamar. Fiz uma pequena leitura - é assim que o Windows lida com o software (legado) tentando gravar em áreas proibidas (como "C: \ Arquivos de Programas \"), para que o ssh do Git não saiba que está gravando no diretório VirtualStore, Windows está lidando com isso de forma transparente. Pelo menos esses arquivos pertencem a um usuário!
DaveGauer
4

A maneira mais eficiente é usar o Pageant porque permitirá que você escreva a senha apenas uma vez no início da sessão, em vez de cada push. Todas as respostas aqui foram muito curtas, então postarei um guia detalhado aqui:

  1. Baixar pageant.exe, puttygen.exe, putty.exee plink.exeno site do PuTTY. Coloque-os no C:\puttyToolsdiretório
  2. Corra puttygen.exe.
  3. Clique no botão Generate.
  4. Mova o mouse na parte superior da janela até que a barra de progresso esteja cheia, como o programa solicita.
  5. Forneça uma senha e repita-a na caixa de texto subsequente.
  6. Clique em "Salvar chave privada". O diretório usual para salvá-los é %USERPROFILE%\_ssh(no meu computador isso mapeia C:\Users\andres\.ssh\). Não importa como você chama a chave, mas para fins de demonstração, eu vou chamá-la github.ppk. Este arquivo deve ter uma extensão .ppk.
  7. Copie o texto na caixa de texto superior do PuTTYgen, a qual está rotulada Public key for pasting into OpenSSH authorized_keys filee cole-a em uma nova chave SSH nas configurações do GitHub. Dê um título que descreva em que máquina a chave está ligada (por exemplo, "Laptop de trabalho").
  8. Executar pageant.exe, um novo ícone de bandeja será exibido.
  9. Clique com o botão direito do mouse no ícone -> Adicionar chave.
  10. Localize seu arquivo ppk, digite sua senha.
  11. Crie essas novas variáveis ​​de ambiente do usuário (procurando aplicativo Environno WindowsMenu que encontrará Edit environment variables for your account): GIT_SSH = "C:\puttyTools\plink.exe"eSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. Abra o putty.exe e tente conectar-se ao host em que você hospeda seus repositórios Git. Por exemplo, tente conectar-se ao github.com via SSH, e uma caixa de diálogo perguntará se você aceita a impressão digital do servidor: clique em SIM.
  13. Executar uma nova instância da sua MINGW64consola Git, e verificar se as variáveis de ambiente estão lá escrevendo o comando env | grep -i ssh.
  14. Você deve estar pronto. Tente clonar com o protocolo Git + SSH do seu host.

(Originalmente extraído desses dois guias que eu combinei em um: Como configurar o Git para Windows e configurar o MinGW-W64 + MSYS para usar o PuTTY Plink / Pageant .)

knocte
fonte
3

Ao misturar o GitHub para Windows e a GI GUI para Windows, você pode encontrar problemas em que a GUI do Git continua solicitando um nome de usuário e senha. A solução para isso é alterar a URL remota de https:(que é o que o GitHub for Windows cria) para o protocolo Git. No .gitdiretório no arquivo de configuração, localize:

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

Altere para:

[remote "origin"]
    url = [email protected]:**username**/**reponame**.git
    fetch = +refs/heads/*:refs/remotes/origin/*
IDisposable
fonte
Sim, é muito chato. É natural e fácil clonar um repositório com o github para GUI do Windows, mas quando o uso do git cui fora do git shell falhou. Eu me pergunto como o comando git no shell git trabalha com url https ...
Hiroshi
para SSH é o prefixo sempre git@{SERVER URL}?
precisa saber é o seguinte
Sim, tanto quanto eu já vi :)
IDisposable
Já tinha isso - ainda me pergunta o tempo todo
Ian Grainger
3

O local padrão para os arquivos está em %USERPROFILE%\.ssh.

%USERPROFILE%é o equivalente a $ HOME no Unix (normalmente mapeia para algo assim c:\users\youruserid).

Se você estiver usando as ferramentas SSH fornecidas com o Git, que são as ferramentas padrão do estilo Unix da linha de comando, você pode usar algo como o meu script aqui para trabalhar com o ssh-agent em todos os shells.

Eric Blade
fonte
Para futuros leitores, não%USERPROFILE% is the equivalent of $HOME é o equivalente a . Um monte de má atuação aplicativos Linux portado para o Windows deleite t os dois o mesmo e, mas eles devem não ser tratados da mesma. $HOME
Micah Zoltu
Micah, você pode informar as diferenças de intenção para isso? Além disso, mesmo com intenções diferentes, parece que se todas as ferramentas usarem uma como a outra, ela não se tornará efetivamente equivalente?
Eric Blade
As ferramentas usadas %USERPROFILE%no Windows da mesma maneira que $HOMEno Linux estão violando as melhores práticas / recomendações bem documentadas para o desenvolvimento do Windows (publicadas pela MS há muito tempo e atualizadas com o tempo). Existem muitas ferramentas que fazem isso, mas o argumento para segui-las é muito parecido com o argumento "X faz xixi no pool, então devemos fazer isso também". USERPROFILEé onde o usuário armazena os documentos que ele cria / salva (por exemplo, salvar a caixa de diálogo). APPDATAé para dados de configuração por usuário. LOCALAPPDATAé para caches por usuário e arquivos grandes. PROGRAMDATAé para configuração e cache em toda a máquina.
Micah Zoltu
Em geral, as únicas ferramentas que se comportam mal com USERPROFILE são as ferramentas criadas pelos desenvolvedores do Linux e depois transportadas para o Windows. Como desenvolvedor, você provavelmente usa muitos deles para que pareça "todo mundo está fazendo isso", mas fora do ecossistema de ferramentas de desenvolvimento, a maioria dos aplicativos Windows realmente são bons cidadãos. Às vezes, até a Microsoft comete o erro de não colocar as coisas no lugar certo (elas são uma grande empresa), embora, em geral, quando você as indica, elas se esforçam para resolver o problema e seguir as diretrizes do sistema operacional.
Micah Zoltu
1
(desculpe, limites de caracteres do StackExchange nos comentários). Aqui estão mais detalhes sobre as pastas e uma breve descrição do que ocorre em cada uma. Também existem outros recursos, incluindo mais posts de consumo, mas este oferece a precisão mais técnica: technet.microsoft.com/en-us/library/cc749104(v=ws.10).aspx
Micah Zoltu
2

Eu tive problemas semelhantes e nenhuma das respostas aqui resolveu o problema. Acontece que meu par de chaves foi gerado originalmente com uma senha vazia. (Eu sei, burro.)

Depois que criei um novo par de chaves e carreguei a chave pública no GitHub, as coisas começaram a funcionar novamente.

Eric Cloninger
fonte
1
esta. ughhhhhhhhhhhh. adeus 2 horas
Scoop
1

A resposta a seguir também se aplica a esta pergunta ao executar o ssh na Conta de Serviço do Windows: Jenkins (Serviço do Windows) com Git sobre SSH

Alexander Pacha
fonte
Seguindo o link que você forneceu, consegui minha configuração do Jenkins. Eu precisava para definir a variável de ambiente HOME para o caminho do programa Git que realizou o diretório .ssh eu criei a minha chave SSH no.
Spechal
1

Você pode especificar o caminho para a chave e o nome do arquivo da chave (no Ubuntu). Por exemplo:

ssh -i /home/joe/.ssh/eui_rsa
jim
fonte
Isso resolve absolutamente o problema e permite que você armazene suas chaves onde quiser.
DaveGauer
A pergunta era especificamente sobre janelas. Eu tenho o git na minha máquina Ubuntu funcionando assim, mas não sei dizer o que definir GIT_SSH_COMMANDna minha máquina Windows.
Mjaggard 6/09
1

O concurso (um agente SSH fornecido com o pacote PuTTY ) resolve o problema para mim.

Eu tenho um atalho na pasta Inicialização do meu Menu Iniciar ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) apontando para "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 ele carregue minhas chaves SSH na inicialização e isso faça o Git "simplesmente funcionar": o)

Owen Blacker
fonte
4
Eu acho que você precisa de várias outras configurações corretas para que isso funcione (como GIT_SSH definido como TortoisePLink.exe, eu acho?) E, embora tenha funcionado para mim no passado, muitas vezes tenho problemas com ele em outras máquinas. :-(
Simon East
I get 'Não é possível abrir o arquivo' do Pageant :( que eu sei que está configurado corretamente como eu estou usando-o para TortoiseGit :(
Ian Grainger
1

Muitas respostas dizem isso, mas para mim não é rápido o suficiente!

no windows usando msys (console padrão do windows) C:\Users\{you}\.ssh\id_rsa

Basicamente, ele não se incomoda em verificar as chaves instaladas (pelo menos não no meu novo laptop) e, portanto, precisa especificamente id_rsa

Eu encontrei esse desejo de clonar alguns repositórios de trabalho particulares em ruby ​​MSYS CLI para windows 10 de 64 bits

MrMesees
fonte
0

Se você estiver no Windows 7/8, deve procurar em C: \ Users \ Your_User_Name.ssh Basta copiar e colar seu arquivo id_rsa aqui e tudo funcionará imediatamente.

eeree
fonte
0

Um erro que cometi ao usar o SSH no Windows foi que, quando tentei usar as chaves através do cliente Git Bash, todos os arquivos em ~ / .ssh foram as permissões erradas, mas ele não tentou me dizer que era um problema.

Apenas como teste, verifique se você configurou tudo no diretório ~ / .ssh para chmod 600.

Spedge
fonte
0

Se você possui as permissões necessárias na máquina Windows e suas políticas o permitem, sugiro instalar o Cygwin ( https://cygwin.com/ ), especialmente considerando que você possui experiência anterior com Linux. O Cygwin tornará possível manipular suas chaves ssh como você faria em qualquer outra máquina Linux / Unix. E fornece acesso a quase todas as ferramentas CLI do Linux.

torbenl
fonte
1
É perfeitamente razoável fazer sugestões como essa como comentários. Mas, como a pergunta solicita explicitamente o git for windows, você deve esperar votos negativos por postar isso como resposta.
rob
0

O TortoiseGit permite especificar a chave a ser usada ao clonar um repositório. Simplesmente marque "Load Putty Key" e navegue até o .ppkarquivo, como na imagem:https://i.stack.imgur.com/lAyzT.png

NGNeer
fonte
Se desativado, a verificação Settings... -> Network -> SSH clientestá configurada para #C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
Nikita Bosik
0

Corrigi o problema acima criando

~ / .ssh / config

arquivar e colocar:

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

Lendo seu comentário para a resposta de Declan, tente abrir um prompt de comando primeiro (Iniciar → Executarcmd ) e depois navegue até a pasta git / bin e execute ssh-keygen. Teoricamente, isso gerará uma chave RSA e a colocará no diretório apropriado. Depois, basta encontrá-lo e compartilhar sua chave pública com o mundo.

A razão pela qual a janela "pisca" é porque o Windows executa o programa e, quando executado, fecha o prompt de comando, pensando que você já terminou, quando realmente precisa da saída.

naydichev
fonte
0

Usando a v0.17 do Git Gui no Windows, cliquei no seguinte comando de menu: AjudaMostrar chave SSH .

Uma caixa de diálogo apareceu intitulada Your OpenSSH Public Key . Eu gerei uma chave e copiei para a área de transferência. Então continuei a seguir as instruções setup-ssh no githelp a partir do passo três . Posteriormente, o Git Gui se comunicou com o GitHub silenciosamente - sem a necessidade de inserir credenciais.

snow6oy
fonte
0

No meu sistema Windows 7, o Git Gui procura a chave RSA na userprofile/.sshpasta ou mais especificamente c:/users/yourusername/.ssh/.

A parte complicada da minha configuração foi fazer com que o host compartilhado no hostmonster aceite a chave. A única maneira de fazê-lo funcionar era usando o Git Gui para criar os pares de chaves (sem senha) e depois copiar e colar a chave pública por meio do painel de controle, ssh, gerenciar chaves.

Para começar do início, você precisa criar as chaves no Git Gui, indo ao menu Ajuda , Mostrar chave SSH e depois Gerar chave . Agora você terá duas novas chaves no .sshdiretório. Abra o .pubarquivo e copie o conteúdo.

Efetue login no painel de controle no host compartilhado e acesse SSH , Gerenciar chaves SSH e Importar . Cole na caixa Pública e certifique-se de dar o nome certo sem a extensão - a minha era id_rsa. Agora você deve autorizar a chave usando o link de autorização de gerenciamento, para que ela seja concatenada no authorized_keysarquivo.

Agora, seu Git Gui e seu Git Bash devem poder usar o SSH sem precisar digitar a senha. Estranhamente, eu consegui usar o SSH via Git Bash e Git Gui nos meus próprios servidores executando Linux, era apenas a hospedagem compartilhada que estava me dando ataques. Espero que isso ajude alguém, pois levei horas de tentativa e erro para chegar a isso - e é tão simples!

user228414
fonte
0

Se você estiver usando a linha de comando Git para Windows, faça o seguinte:

Abra cmd.exee execute setx HOME c:\PATH_TO_PRIVATE_KEY.

Crie uma nova pasta,, .ssh(se não existir) dentro c:\PATH_TO_PRIVATE_KEYe copie seu id_rsaarquivo (sua chave privada) para ele.

Feito. Agora você pode usar a linha de comando Git normalmente.

duccom
fonte
0

Minha experiência com o msysgit OpenSSL / Bash Git (não o plink de PuTTY) é que a ordem de pesquisa para a .ssh/pasta é a seguinte.

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

Por isso, tantas pessoas sugerem definir HOMEse um dos outros não é o que você espera. Mais importante, você pode verificar por si mesmo; para depurar o uso ssh -vem um servidor que usa autenticação de chave pública da seguinte maneira:

$ 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 a sshpesquisa em uma unidade obscura e nenhuma das respostas anteriores parecia explicar o que vimos.

Às vezes, %HOMEDRIVE%%HOMEPATH%é uma unidade de rede mapeada (por exemplo H:/) que causa falhas desnecessárias quando há problemas na rede / no servidor de arquivos, mesmo quando %USERPROFILE%/.sshexiste C:/Users/Username/.sshe possui as chaves localmente. A configuração %HOME%para o %USERPROFILE%impede de olhar para a unidade doméstica remota.

KCD
fonte
0

Você também pode carregar o PuTTY Agent (concurso) e adicionar a chave privada gerada com o PuTTY para o servidor.

O Git reconhece isso e usa isso para empurrar / puxar.

deepakkt
fonte
0

Eu estava usando o TortoiseGit e o Git Bash no Windows, dependendo da necessidade. Eu adicionei tudo ao TortoiseGit, e funcionou bem, mas o Git Bash não estava conseguindo, mesmo que as chaves estivessem no diretório correto. Acontece que eu tive que fazer isso com o Git Bash:

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

É claro que você pode alterar o caminho para onde sua chave estiver localizada, lembrando-se de usá-la \\como separador.

Vlad Schnakovszki
fonte
0

Se você estiver usando o Git for Windows, depois que as chaves SSH forem geradas, você deverá adicionar sua chave SSH ao ssh-agent.

Consulte Gerando uma nova chave SSH e adicionando-a ao ssh-agent .

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa
Matoeil
fonte
Bem-vindo à falha do servidor. Esta pergunta já tem uma resposta amplamente aceita, aceita há vários anos. Continue procurando por perguntas mais recentes ou que possam ser significativamente melhoradas.
Matthew Wetmore
1
a resposta amplamente aceita não funcionou para mim, enquanto essa funcionou. Eu acredito que pode ajudar alguém a conhecer a chave deve ser adicionado ao agente ssh e pode ser feito com 2lines de instruções
Matoeil