ti-enxame.com

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

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

503
binaryorganic

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\phsr Eu acho). Enquanto estiver no Git Bash, você deve mkdir .ssh.

Depois de ter o diretório inicial e uma pasta .ssh, Você deseja abrir o PuTTYgen e abrir a chave (arquivo .ppk) que você criou anteriormente. Quando sua chave estiver aberta, você deseja selecionar Conversions -> Export OpenSSH key E 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 tecla 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 via instruções do ritmo . Você precisa fazer isso para todos os repositórios com os quais você está usando o TortoiseGit.

493
Dan McClain

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 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 os ajustes GIT_SSH. Consulte todos os tutoriais do SVN + ssh; este é basicamente o mesmo encanamento que você precisa configurar.

108
Oct

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

  • Abra uma janela do Explorer.
  • Abra o menu de contexto e navegue em 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:

Enter image description here

57
pacey

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 seu servidor, por exemplo: scp ~/.ssh/id_rsa.pub [email protected]: ~

Essa é a parte do seu próprio computador. Agora ssh no 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 do Shell ao servidor deles, mas pode fazer o upload da chave usando o site deles; portanto, para o bit 'agora copiar 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.
51
Hugh Perkins

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

Aqui está um exemplo de uma configuração Git para 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 sessão atual, para evitar ter que digitar repetidamente a senha da chave.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key
42
GregB

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

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

Meu Git foi instalado por Chocolatey a 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 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 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 apenas UTF-8! Portanto, certifique-se de alterar o known_hosts codificação de arquivo.

9
oglop

Sua chave privada precisa ser adicionada ao agente SSH em sua estação de trabalho. Como você pode conseguir isso depende de qual cliente git você está usando, no entanto, o PuTTY e seu agente associado (concurso) podem 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

7
Declan Shanaghy

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

%USERPROFILE% é o equivalente a $ HOME no Unix (normalmente mapeia para algo como 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 meu script aqui para trabalhar com o ssh-agent em todos os shells.

4
Eric Blade

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.exe e plink.exe do site da PuTTY. Coloque-os em C:\puttyTools diretório.
  2. Corre 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 salvar esses arquivos é %USERPROFILE%\_ssh (no meu computador isso é mapeado para 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 no PuTTYgen, a que está identificada como Public key for pasting into OpenSSH authorized_keys file e cole-o em uma nova chave SSH nas configurações do GitHub. Atribua a ele um título que descreva em que máquina a chave está ligada (por exemplo, "Laptop de trabalho").
  8. Corre 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 o aplicativo Environ através do 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 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. Execute uma nova instância do seu MINGW64 Console do Git e verifique 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 Configure o MinGW-W64 + MSYS para usar o PuTTY Plink/Pageant.)

4
knocte

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 \

3
Bas van den Dikkenberg

Ao misturar o GitHub for Windows e o Git GUI para Windows, você pode encontrar problemas nos quais o Git GUI continua solicitando um nome de usuário e senha. A solução para isso é alterar o URL remoto de https: (que é o que o GitHub for Windows cria) para o protocolo Git. No .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/*
3
IDisposable

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.

2
Eric Cloninger

Corrigi o problema acima criando

~/.ssh/config

arquivar e colocar:

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

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)

1
Owen Blacker

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

1
Alexander Pacha

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

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 preocupa 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

1
MrMesees

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

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

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 comando Prompt, pensando que você terminou com isso, quando realmente precisa da saída.

0
naydichev

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.

0
eeree

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.

0
Spedge

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

0
deepakkt

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.

0
torbenl

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

0
Vlad Schnakovszki

No meu sistema Windows 7, o Git Gui procura a chave RSA no userprofile/.ssh pasta 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, acessando o menu Ajuda, Mostrar chave SSH, depois Gerar chave. Agora você terá duas novas chaves no .ssh diretório. Abra o .pub e copie o conteúdo.

Entre no seu painel de controle no host compartilhado e acesse SSH , Gerenciar chaves SSH e Import key. Cole na caixa Pública e não se esqueça de nomeá-lo sem a extensão - o meu era id_rsa. Agora você deve autorizar a chave usando o link de autorização de gerenciamento, para que ela seja concatenada no authorized_keys Arquivo.

Agora, seu Git Gui e seu Git Bash devem poder enviar usando SSH sem precisar digitar a senha. Estranhamente, eu era capaz de enviar usando SSH via Git Bash e Git Gui muito bem em 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!

0
user228414

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

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

Por isso, tantas pessoas sugerem definir HOME se um dos outros não é o que você espera. Mais importante, você pode verificar por si mesmo; para depurar use ssh -v para 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 ssh pesquisando em uma unidade obscura e nenhuma das respostas anteriores parecia explicar o que vimos.

As 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%/.ssh é C:/Users/Username/.ssh e possui as chaves localmente. Configuração %HOME% para %USERPROFILE% pára de olhar para a unidade doméstica remota.

0
KCD

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

Apareceu uma caixa de diálogo intitulada Sua chave pública do OpenSSH . Eu gerei uma chave e copiei para a área de transferência Então continuei a seguir as instruções setup-ssh em githelp a partir de Etapa três em diante. Posteriormente, o Git Gui se comunicou com o GitHub silenciosamente - sem a necessidade de inserir credenciais.

0
snow6oy

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

git Push Origin master

Então, minha solução:

  1. Abri 'Git Bash'
  2. Correu

    ssh-keygen
    
  3. Chaves confirmadas agora existem

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

  5. Adicionada uma nova chave no Bitbucket, https://bitbucket.org/account/user/myusername/ssh-keys/

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

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

0
HostMyBus

O TortoiseGit permite especificar a chave a ser usada ao clonar um repositório. Basta marcar "Carregar chave PuTTY" e navegar para o .ppk, como na captura de tela: https://i.stack.imgur.com/lAyzT.png

0
NGNeer

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

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

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

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

0
duccom