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 ssh
onde 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.
487
Respostas:
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 comoC:\Users\phsr
eu acho). Enquanto estiver no Git Bash, você deveriamkdir .ssh
.Depois de ter o diretório inicial e uma
.ssh
pasta 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 selecionarConversions -> Export OpenSSH key
e salvá-la emHOME\.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
(ouProgram 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.
fonte
~/.ssh/id_rsa
arquivoProgram 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.id_rsa
eid_rsa.pub
dentro delec:\program files (x86)\Git\.ssh
. O.ssh
dir já estava presente. Obrigado JP.id_rsa
sem a extensão. Que é o nome do arquivo, não é um diretórioUsando 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.
fonte
setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use
cmd` em vez disso.GIT_SSH=c:\pathto\plink.exe
Você pode especificar o local principal do TortoiseGit da seguinte maneira:
Uma captura de tela está abaixo:
fonte
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.
Essa é a parte do seu computador feita. Agora
ssh
no servidor de destino, façaÉ isso aí! Você Terminou! No Git Bash, faça o seguinte para testar:
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:
fonte
Se você estiver usando o msysgit com as ferramentas OpenSSH, precisará criar
~/.ssh/id_rsa
ou criar uma configuração do Git na~/.ssh/config
qual 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 :
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.
fonte
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:
fonte
%HOMEPATH%
não contém a letra da unidade; portanto, se sua fonte não estiver,C:
você precisará anexáC:
-la%HOME%
.set %HOME%=%HOMEPATH%
trabalhou para mim! Obrigado!!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
fonte
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)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_config
com isso: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_hosts
OpenSSH, tenha cuidado, pois a saída da tubulaçãostdout
dekeyscan
(no Windows) altera a codificação para UCS-2, mas o OpenSSH pode ler apenas UTF-8! Portanto, certifique-se de alterar aknown_hosts
codificação do arquivo.fonte
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:
Para Windows 7, 8 e 8.1 de 64 bits:
fonte
known_hosts
. Com certeza, estava dentroC:\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!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:
pageant.exe
,puttygen.exe
,putty.exe
eplink.exe
no site do PuTTY. Coloque-os noC:\puttyTools
diretórioputtygen.exe
.%USERPROFILE%\_ssh
(no meu computador isso mapeiaC:\Users\andres\.ssh\
). Não importa como você chama a chave, mas para fins de demonstração, eu vou chamá-lagithub.ppk
. Este arquivo deve ter uma extensão .ppk.Public key for pasting into OpenSSH authorized_keys file
e 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").pageant.exe
, um novo ícone de bandeja será exibido.Environ
no WindowsMenu que encontraráEdit environment variables for your account
):GIT_SSH = "C:\puttyTools\plink.exe"
eSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
MINGW64
consola Git, e verificar se as variáveis de ambiente estão lá escrevendo o comandoenv | grep -i ssh
.(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 .)
fonte
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.git
diretório no arquivo de configuração, localize:Altere para:
fonte
git@{SERVER URL}
?O local padrão para os arquivos está em
%USERPROFILE%\.ssh
.%USERPROFILE%
é o equivalente a $ HOME no Unix (normalmente mapeia para algo assimc:\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.
fonte
%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
%USERPROFILE%
no Windows da mesma maneira que$HOME
no 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.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.
fonte
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
fonte
Você pode especificar o caminho para a chave e o nome do arquivo da chave (no Ubuntu). Por exemplo:
fonte
GIT_SSH_COMMAND
na minha máquina Windows.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)fonte
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
fonte
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.
fonte
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.
fonte
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.
fonte
O TortoiseGit permite especificar a chave a ser usada ao clonar um repositório. Simplesmente marque "Load Putty Key" e navegue até o
.ppk
arquivo, como na imagem:fonte
Settings... -> Network -> SSH client
está configurada para #C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
Corrigi o problema acima criando
arquivar e colocar:
fonte
Lendo seu comentário para a resposta de Declan, tente abrir um prompt de comando primeiro (Iniciar → Executar → cmd ) 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.
fonte
Usando a v0.17 do Git Gui no Windows, cliquei no seguinte comando de menu: Ajuda → Mostrar 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.
fonte
No meu sistema Windows 7, o Git Gui procura a chave RSA na
userprofile/.ssh
pasta ou mais especificamentec:/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
.ssh
diretório. Abra o.pub
arquivo 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 noauthorized_keys
arquivo.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!
fonte
Se você estiver usando a linha de comando Git para Windows, faça o seguinte:
Abra
cmd.exe
e executesetx HOME c:\PATH_TO_PRIVATE_KEY
.Crie uma nova pasta,,
.ssh
(se não existir) dentroc:\PATH_TO_PRIVATE_KEY
e copie seuid_rsa
arquivo (sua chave privada) para ele.Feito. Agora você pode usar a linha de comando Git normalmente.
fonte
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.%HOME%/.ssh/
%HOMEDRIVE%%HOMEPATH%/.ssh/
%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 o usossh -v
em um servidor que usa autenticação de chave pública da seguinte maneira:Encontramos a
ssh
pesquisa em uma unidade obscura e nenhuma das respostas anteriores parecia explicar o que vimos.Às vezes,
%HOMEDRIVE%%HOMEPATH%
é uma unidade de rede mapeada (por exemploH:/
) que causa falhas desnecessárias quando há problemas na rede / no servidor de arquivos, mesmo quando%USERPROFILE%/.ssh
existeC:/Users/Username/.ssh
e possui as chaves localmente. A configuração%HOME%
para o%USERPROFILE%
impede de olhar para a unidade doméstica remota.fonte
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.
fonte
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:
É claro que você pode alterar o caminho para onde sua chave estiver localizada, lembrando-se de usá-la
\\
como separador.fonte
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 .
fonte