Minha configuração do Git funciona bem no Linux, mas quando tento configurar as coisas no Windows (usando Git for 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 para Windows. A configuração funciona bem se eu permitir autenticação de senha (em vez de RSA) no servidor.
Para Git Bash
Se você estiver executando o msysgit (suponho que esteja) e desejando executar o Git Bash (recomendo-o sobre o TortoiseGit, mas agora me apóio na CLI mais do que na GUI), você precisa descobrir qual é o seu diretório inicial para o Git Bash iniciando-o e digite
pwd
(no Windows 7, será algo comoC:\Users\phsr
eu acho). Enquanto estiver no Git Bash, você devemkdir .ssh
.Depois de ter o diretório inicial e uma
.ssh
pasta sob ele, você deseja abrir o PuTTYgen e abrir a chave (arquivo .ppk) que você criou anteriormente. Quando sua chave estiver aberta, você deseja selecionáConversions -> Export OpenSSH key
-la e salvá-la emHOME\.ssh\id_rsa
. Depois que você tiver 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 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 pacey . Você precisa fazer isso para cada repositório com o qual está usando o TortoiseGit.
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.Isso fez 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 a partir de um cmd.exe para não piscar uma janela.
Se isso não funcionar corretamente, o uso de plink provavelmente pode ser alcançado ajustando GIT_SSH . Consulte todos os tutoriais de SVN + ssh; este é basicamente o mesmo encanamento que você precisa configurar.
Você pode especificar o local da chave para o TortoiseGit da seguinte maneira:
Uma captura de tela está abaixo:
Nenhuma das respostas anteriores funcionou para mim. Aqui foi 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 em seu próprio computador feito. Agora
ssh
no servidor de destino, então façaÉ isso! Você Terminou! No Git Bash, faça o seguinte para testar:
Se ele listar os arquivos em seu diretório inicial no servidor Git, e pronto!
Para o GitHub, você não tem acesso shell ao servidor deles, mas pode fazer upload da chave usando o site deles, então para o bit 'agora copie para o seu servidor', faça:
Se você estiver usando 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 configuração do Git para Bitbucket que usará o nome de usuário correto e uma chave diferente da 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 agente ssh da sua sessão atual para evitar ter que digitar repetidamente a senha da chave.
Acabei de definir %HOME%=%HOMEPATH%
Isso tem a vantagem de funcionar para todos os usuários logados no sistema (cada um deles recebe pastas .ssh separadas).
Na Vista:
In my case I was using Git for Windows in the Docker container
windowsservercore
.My Git was installed by Chocolatey to
C:\Program Files\Git
.I had to update the file
C:\Program Files\Git\etc\ssh\ssh_config
with this:Then I was could use key from
C:\Users\<user>\.ssh\id_rsa
If you are using Git for windows together with OpenSSH for Windows. Git is still using its own
ssh
.Plus if you plan using
ssh-keyscan host.com > known_hosts
from OpenSSH, be careful because piping output fromstdout
ofkeyscan
(on Windows) changes encoding to UCS-2, but OpenSSH can read only UTF-8! So make sure to change theknown_hosts
file encoding.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, o puTTY e seu agente associado (pageant) 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
Ao misturar o GitHub para Windows e o Git GUI para Windows, você pode encontrar problemas em que o Git GUI continua solicitando um nome de usuário e uma senha. A cura para isso é alterar a URL remota
https:
(que é o que o GitHub para Windows cria) para o protocolo Git. No.git
diretório do arquivo de configuração, localize:Altere para:
The most efficient way is using Pageant because it will let you write the passphrase only once at the beginning of the session instead of every push. All answers here were too short, so I'll post a detailed guide here:
pageant.exe
,puttygen.exe
,putty.exe
andplink.exe
from PuTTY's website. Place them inC:\puttyTools
directory.puttygen.exe
.%USERPROFILE%\.ssh
(in my computer this maps toC:\Users\andres\.ssh\
). It doesn't matter what you call the key, but for demonstration purposes, I'm going to call itgithub.ppk
. This file should have an extension of .ppk.Public key for pasting into OpenSSH authorized_keys file
and paste it into a new SSH key in GitHub's settings. Give it a title that describes what machine the key is on (e.g. "Work laptop").pageant.exe
, a new systray icon will appear.Environ
through WindowsMenu which will findEdit environment variables for your account
):GIT_SSH = "C:\puttyTools\plink.exe"
andSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
MINGW64
Git console, and verify that the environment variables are there by writing the commandenv | grep -i ssh
.(Originally extracted from these two guides which I combined in one: How to setup Git for Windows and Configure MinGW-W64+MSYS to use PuTTY Plink/Pageant.)