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

466

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

    
por binaryorganic 25.10.2010 / 18:45

31 resposta

464

Para o Git Bash

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

Depois de ter o diretório inicial e a pasta .ssh abaixo, você deseja abrir o PuTTYgen e abrir a chave (arquivo .ppk) criada anteriormente. Quando a chave estiver aberta, você deseja selecionar Conversions -> Export OpenSSH key e salvá-la em HOME\.ssh\id_rsa . Depois de ter a chave naquele local, o Git Bash reconhecerá a chave e a usará.

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

Para o TortoiseGit

Ao usar o TortoiseGit, você precisa definir a chave SSH via direções do pacey . Você precisa fazer isso para cada repositório com o qual você está usando o TortoiseGit.

    
por 05.11.2010 / 18:18
103

Usando o cliente SSH integrado fornecido com o Git para 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 meu dia e resolveu 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á rodar o ssh-agent cmd.exe (embora eu nunca tenha feito isso) e o ssh-add como sempre.

Note que todas as ferramentas Git / SSH devem ser executadas a partir de um cmd.exe para não piscar uma janela.

Se isso não funcionar corretamente, provavelmente será possível usar o plink ajustando GIT_SSH . Consulte todos os tutoriais do SVN + ssh; este é basicamente o mesmo encanamento que você precisa configurar.

    
por 05.11.2010 / 19:24
48

Você pode especificar o local da chave para o TortoiseGit da seguinte maneira:

  • Abra uma janela do Explorer.
  • Abra o menu de contexto e navegue TortoiseGit Configurações
  • Na janela agora aberta, navegue até Git Remoto
  • Defina o caminho para a chave do PuTTY na caixa de entrada correspondente.

Uma captura de tela está abaixo:

    
por 05.11.2010 / 15:07
45

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 do PuTTY.

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

Isso é o bit no seu próprio computador feito. Agora ssh no servidor de destino, então faça

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

É isso! Você está feito! Do 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 ao seu servidor, mas você pode fazer o upload da chave usando o site, então para o bit 'agora copie para o seu 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.
por 25.04.2012 / 03:32
34

Se você estiver usando msysgit com as ferramentas OpenSSH, precisará criar ~/.ssh/id_rsa ou criar uma configuração do Git em ~/.ssh/config , o que aponta para sua chave.

Aqui está um exemplo de uma configuração do Git para Bitbucket que usará o nome de usuário correto e uma chave diferente da chave padrão (no caso de você manter 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
    
por 11.04.2013 / 08:34
14

Acabei de definir% HOME% =% HOMEPATH%

Isso tem a vantagem de trabalhar para todos os usuários logados no sistema (cada um deles obtém pastas .ssh separadas).

No Vista:

  1. Clique com o botão direito em Computador
  2. Escolher 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 o tipo de nome da variável: HOME
  7. Para o tipo de caminho de variável:% HOMEPATH%
  8. Clique em OK
por 12.10.2012 / 03:26
7

Sua chave privada precisa ser adicionada ao agente SSH em sua estação de trabalho. Como você consegue isso pode depender de qual cliente git você está usando, no entanto puTTY e seu agente associado (pageant) podem fazer o truque para você, aqui está o link para os binários oficiais e fonte:

link

    
por 25.10.2010 / 19:38
4

OK, olhei para a sugestão de . .

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

Então, se você quiser proteger corretamente sua chave SSH, é necessário colocar sua chave no seguinte diretório:

Para o Windows 7, 8 e 8.1 de 32 bits:

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

Para o Windows 7, 8 e 8.1 de 64 bits:

C:\Users\AppData\Local\VirtualStore\Program Files (x86)\Git\

    
por 08.09.2014 / 12:04
4

No meu caso eu estava usando o Git para Windows no container Docker windowsservercore .

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

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

Host example.com
   Identityfile ~/.ssh/id_rsa

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

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

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

    
por 02.11.2017 / 16:27
2

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

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

    
por 01.02.2013 / 00:15
2

Ao misturar o GitHub para Windows e o Git GUI para Windows, você pode encontrar problemas onde a GUI do Git continua solicitando um nome de usuário e senha. A cura para isso é alterar o URL remoto de https: (que é o que o GitHub para Windows cria) para o protocolo Git. No diretório .git 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/*
    
por 05.09.2014 / 00:34
1

A seguinte resposta também se aplica a essa pergunta ao executar o ssh a partir da conta de serviço do Windows: Jenkins (Windows Service) com o Git sobre SSH

    
por 27.10.2012 / 09:31
1

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

ssh -i /home/joe/.ssh/eui_rsa
    
por 15.12.2011 / 17:44
1

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

Eu tenho um atalho na pasta Startup 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 faz com que o Git "simplesmente funcione": o)

    
por 12.12.2013 / 13:29
1

A localização padrão dos arquivos está em %USERPROFILE%\.ssh .

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

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

    
por 14.11.2014 / 05:47
1

A maneira mais eficiente é usar o Pageant, pois ele permite 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 vou postar um guia detalhado aqui:

  1. Baixe pageant.exe , puttygen.exe , putty.exe e plink.exe do site da PuTTY. Coloque-os no diretório C:\puttyTools .
  2. Executar puttygen.exe .
  3. Clique no botão Gerar .
  4. Mexa o mouse na parte superior da janela até que a barra de progresso esteja cheia, como o programa pede para você fazer.
  5. Forneça uma frase secreta 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 para C:\Users\andres\.ssh\ ). Não importa o que você chama de chave, mas para fins de demonstração, vou chamá-lo de github.ppk . Este arquivo deve ter uma extensão de .ppk.
  7. Copie o texto na caixa de texto superior em PuTTYgen, o rótulo Public key for pasting into OpenSSH authorized_keys file e cole-o em uma nova chave SSH nas configurações do GitHub. Dê um título que descreva em qual máquina a chave está (por exemplo, "Laptop de trabalho").
  8. Execute pageant.exe , um novo ícone systray aparecerá.
  9. Clique com o botão direito no ícone - > Adicionar chave.
  10. Localize o seu arquivo ppk, insira sua frase secreta.
  11. Crie essas novas variáveis de ambiente do usuário (procurando o aplicativo Environ pelo WindowsMenu, que encontrará Edit environment variables for your account ): GIT_SSH = "C:\puttyTools\plink.exe" e SVN_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 se conectar 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. Execute uma nova instância do seu console MINGW64 Git e verifique se as variáveis de ambiente estão lá, escrevendo o comando env | grep -i ssh .
  14. Você deve estar tudo 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 Configure o MinGW-W64 + MSYS para usar PuTTY Plink / Pageant .

    
por 15.05.2017 / 12:57
0

Se você estiver no Windows 7/8, deverá procurar em C: \ Users \ Your_User_Name.ssh Basta copiar & cole seu arquivo id_rsa aqui e tudo funcionará pronto para uso.

    
por 21.09.2014 / 02:13
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 dentro de ~ / .ssh eram as permissões erradas, mas não tentou me dizer que foi um problema.

Assim como um teste, certifique-se de ter configurado tudo no seu diretório ~ / .ssh para o chmod 600.

    
por 14.10.2015 / 15:04
0

Se você tiver as permissões necessárias na máquina Windows e suas políticas permitirem, sugiro instalar o Cygwin ( link ), especialmente considerando que você tenha experiência anterior com o Linux. O Cygwin possibilitará 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.

    
por 07.01.2016 / 11:57
0

O TortoiseGit permite-lhe especificar a chave a utilizar quando clonar um repositório. Simplesmente marque "Load Putty Key" e navegue até o arquivo .ppk , como na captura de tela:

    
por 13.12.2016 / 18:13
0

Corrigi o problema acima criando

~/.ssh/config

arquivo e colocar:

IdentityFile C:\Users\adria\.ssh\mysshkey
    
por 28.12.2016 / 14:26
0

Lendo seu comentário para a resposta de Declan, tente abrir um prompt de comando primeiro (Iniciar → Executar cmd ) e navegue até a pasta git / bin e execute ssh-keygen . Teoricamente, isso gerará uma chave RSA e a colocará no diretório apropriado. Então você só precisa 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 ele é executado, ele fecha o prompt de comando, pensando que você está pronto, quando realmente precisa da saída.

    
por 05.11.2010 / 03:04
0

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

Um diálogo apareceu com o título Sua chave pública do OpenSSH . Eu gerou uma chave e copiei para a área de transferência. Então continuei seguindo as instruções do setup-ssh em githelp do Terceiro Passo em diante. Depois disso, o Git Gui se comunicou com o GitHub silenciosamente - não é necessário inserir nenhuma credencial.

    
por 07.06.2014 / 12:11
0

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

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

Para começar do começo, você tem que criar as chaves em Git Gui indo ao menu Ajuda , Mostrar chave SSH , então Gerar chave . Agora você terá duas novas chaves no diretório .ssh . Abra o arquivo .pub e copie o conteúdo.

Faça login no painel de controle no host compartilhado e vá para SSH , Gerenciar chaves SSH e Import key . Cole na caixa Pública e certifique-se de nomear o nome certo sem a extensão: a minha foi id_rsa . Agora você deve autorizar a chave usando o link de autorização de gerenciamento, para que ela seja concatenada no arquivo authorized_keys .

Agora o seu Git Gui e o seu Git Bash devem poder usar o SSH sem precisar digitar a senha. Estranhamente, eu era capaz de empurrar usando SSH via Git Bash e Git Gui muito bem em meus próprios servidores rodando Linux, era apenas a hospedagem compartilhada que estava me dando ajustes. Espero que isso ajude alguém, já que precisei de horas de tentativa e erro para criar isso - e é tão simples!

    
por 28.06.2014 / 19:55
0

Se você estiver usando a linha de comando do Git para Windows, você pode fazer o seguinte:

Abra cmd.exe e execute setx HOME c:\PATH_TO_PRIVATE_KEY .

Crie uma nova pasta, .ssh , (se não existir) dentro de c:\PATH_TO_PRIVATE_KEY e copie seu arquivo id_rsa (sua chave privada) para ele.

Concluído. Agora você pode usar a linha de comando do Git normalmente.

    
por 11.03.2015 / 11:17
0

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

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

Por isso, muitas pessoas sugerem a configuração de HOME se um dos outros não for o que você espera. Mais importante, você pode verificar por si mesmo; para depurar o uso de ssh -v em um servidor que usa autenticação de chave pública da seguinte forma:

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

Às vezes, %HOMEDRIVE%%HOMEPATH% é uma unidade de rede mapeada (por exemplo, H:/ ) que causa falhas desnecessárias quando há problemas de rede / servidor, mesmo quando %USERPROFILE%/.ssh é C:/Users/Username/.ssh e tem as chaves localmente. A configuração de %HOME% para %USERPROFILE% impede que ele veja a unidade inicial remota.

    
por 20.12.2015 / 23:37
0

Você também pode carregar o PuTTY Agent (pageant) e adicionar a chave privada que você gerou com o PuTTY para o servidor.

O Git reconhece isso e usa isso para push / pull.

    
por 27.05.2016 / 07:07
0

Eu estava usando o TortoiseGit, assim como o Git Bash no Windows, dependendo da necessidade. Eu adicionei tudo no TortoiseGit, e funcionou bem, mas o Git Bash não estava pegando, 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

Você pode mudar o caminho para onde sua chave está localizada, lembrando-se de usar \ como separador.

    
por 09.05.2017 / 15:44
0

Se estiver usando o Git para Windows, uma vez que as chaves SSH tenham sido geradas, você deve adicionar sua chave SSH ao ssh-agent.

Veja Gerando uma nova chave SSH e adicionando-a ao agente ssh .

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa
    
por 13.09.2017 / 17:03
0

Usando o Windows 10, não consegui fazer com que a chave SSH gerada pelo concurso funcionasse (pelo menos para o Git na linha de comando, usando o SourceTree não tive um problema) ao executar:

git push origin master

Então, minha solução:

  1. eu abri 'Git Bash'
  2. Ran

    ssh-keygen
    
  3. As chaves confirmadas agora existem

    ls ~/.ssh
    
  4. O id_rsa.pub aberto no Notepad ++ selecionou todo o conteúdo

  5. Adicionada uma nova chave no Bitbucket, link

  6. Conteúdo marcado e colado no campo-chave - > Adicionar chave

Depois disso, a linha de comando Git funcionou. Parece que ele quer o formato PEM antigo, porque se eu tentar importar essa chave para o concurso, ele diz isso.

    
por 11.12.2017 / 15:24