TortoiseGit com a chave openssh não autenticando usando o ssh-agent
estou a criar um ambiente git no Windows XP (msysGit 1.7.11, TortoiseGit 1.7.14) e a tentar alcançar os seguintes pontos:
- ligação ssh num porto diferente do predefinido 22
- a autenticação SSH feita pelo agente SSH
Host gitbox
User gitolite
Hostname XX.XX.XX.XX
Port 154
PreferredAuthentications publickey
IdentityFile "/c/Documents and Settings/kraymer/.ssh/id_rsa"
ao usar o Git bash CLI, tudo funciona como planeado.
Estou a lutar com o TortoiseGit.Instalei pela primeira vez o TortoiseGit com o Plink e usar o Concurso para carregar a chave privada do ssh. A autenticação automática (Pageant) funcionou, mas a configuração foi uma falha porque o TortoiseGit não reconhece o url do Git repos formatado como gitolite@gitbox/repo.git .
decidi então instalar o TortoiseGit usando o cliente openssh, para que o ficheiro possa ser lido pelo cliente ssh, e para imitar a configuração do Git CLI.
Eu escolhi o ssh.o exe foi enviado com o msys git como cliente ssh na configuração do TortoiseGit.
Ao fazer um git pull
, o url remoto está agora resolvido, mas a senha da frase-senha é pedida, enquanto espero que a autenticação automática do ssh-agent ocorra.
Ou tornar TortoiseGit (Plink) ciente de .ssh / config ?
Editar #1
seguindo o Conselho do @VonC configurei a minha variável $HOME.
Quando eu clicar em mostrar as variáveis de ambiente em TortoiseGit agora tenho:
HOME=C:\Documents and Settings\kraymer
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\kraymer
Mas git pull
ainda necessita que indique a frase-senha.
6 answers
Instalei pela primeira vez o TortoiseGit com Plink e usei o Concurso para carregar a chave privada do ssh. A autenticação automática (Pageant) funcionou, mas a configuração foi uma falha porque o TortoiseGit não reconhece o url do Git repos formatado como gitolite@gitbox/repo.pira-te.
Finalmente encontrei uma solução que consiste em criar uma sessão de massa com o mesmo nome que a alcunha ssh (ie gitbox na pergunta).
Desta forma, posso clonar como git clone gitbox/monrepo
no CLI e a sintaxe origin
está correcta tratado por TortoiseGit.
1) Cygwin
Utilizar o método descrito no seguinte artigo:: https://help.github.com/articles/working-with-ssh-key-passphrases
A senha só será pedida uma vez no arranque da sessão do cygwin. !!! Antes de sair da sessão do cygwin, não se esqueça de matar o processo do agente ssh (use o ps para encontrar o PID do processo e o kill-9).
Estamos a usar uma abordagem separada para o cygwin, porque por alguma razão o cygwin não vê processos iniciados externamente nas janelas. ambiente.2, 3) MsysGit, TortoiseGit
Ligação útil: http://dogbiscuit.org/mdub/weblog/Tech/WindowsSshAgent
Instale O MsysGit. Instalar o TortoiseGit (verifique o openssh em vez do plink durante a instalação). !!! Verifica as variáveis dos sistemas. Se existir uma variável GIT_SSH presente-remova-a.
Go to TortoiseGit - >Settings- > General
Definir a localização do Git exe em /bin Mudar a localização externa da dll para /mingw / bin
Ir para TortoiseGit - >Configuração - >Rede Definir o SSH Propriedade do cliente para /bin / ssh.exe
Defina a variável do sistema SSH_ AUTH_LOCKS=C:\temp.SSH-socket
Iniciar cmd.exe e execute os seguintes comandos(uma vez que instalámos o MsysGit, todos os seguintes comandos estão acessíveis no cmd - / bin é adicionado à variável de localização do sistema):
# following command is required to execute for avoiding Address already bind message when ssh-agen is not started yet but .ssh-socket exists after previous agent session
rm "%SSH_AUTH_SOCK%"
# Starting ssh-agent
ssh-agent -a "%SSH_AUTH_SOCK%"
# Adding our openssh key
ssh-add "%USERPROFILE%\.ssh\id_rsa"
# Type password for your key
É isso. A partir desse momento você pode executar git push, git pull do TortoiseGit e MsysGit sem pedir a frase-senha.
Quando o agente ssh já não é necessário, pode matá-lo através da tarefa do windows. Manager.
Criei este ficheiro em lote para resolver o problema.
CALL "C:\Program Files\Git\cmd\start-ssh-agent.cmd"
SETX SSH_AUTH_SOCK "%SSH_AUTH_SOCK%"
SETX SSH_AGENT_PID "%SSH_AGENT_PID%"
Execute isto uma vez, e indique a sua frase-senha.
Depois pode usar o tortoisegit com o openssh sem ter de introduzir a sua frase-senha para cada operação.
Certifique-se de lançar o seu TortoiseGit num ambiente onde HOME
está definido, e faça referência à pasta-mãe de .ssh
.
Isto é importante, uma vez que, no Windows, O HOME não é definido por padrão.
Veja como um exemplo: " Auth falha no Windows XP com git e tortoisegit ".
(Outras fontes possíveis: " Como dizer ao Git para o Windows onde encontrar a minha chave privada RSA?")
Imagem: configuração da rede / cliente de SSH do Git
Em Settings... -> Network -> SSH -> SSH client
, defina o cliente para C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
. Usando o Pageant, você é então autenticado automaticamente como esperado, caso contrário você é solicitado para a sua senha de chave privada. Certifique-se que a opção" Autoload Putty Key " está assinalada na janela de envio.