Por que o git não consegue se lembrar da minha frase secreta no Windows

Acabei de começar a usar o git e não consigo lembrar da minha frase-senha Estou usando cmd.exe elevated e meu host git é github e eu criei uma chave ssh como esse guia no github

mas eu ainda recebo

*\subnus.mvc>git push origin master Enter passphrase for key '/c/Users/Subnus/.ssh/id_rsa': 

Eu percebo que esta pergunta está chegando aos dois anos, mas eu tive o mesmo problema e várias respostas aqui não responderam completamente a pergunta para mim. Aqui estão duas soluções passo-a-passo, dependendo se você usa o TortoiseGit além do msysgit ou não.

Primeira solução Assume o Windows, msysgit e PuTTY.

  1. Instale o msysgit e o PuTTY conforme instruído.
  2. (Opcional) Adicione o PuTTY ao seu caminho. (Se você não fizer isso, então quaisquer referências a comandos do PuTTY abaixo devem ser prefixadas com o caminho completo para o executável apropriado.)
  3. Se você ainda não fez isso, gere um hash de chave conforme instruído no GitHub ou conforme instruído pelo seu host Git.
  4. Novamente, se você ainda não fez isso, converta sua chave para uso com pageant.exe do PuTTY usando puttygen.exe . As instruções estão na documentação do PuTTY, neste guia útil e em vários outros lugares no ciberespaço.
  5. Execute o pageant.exe do PuTTY, abra o arquivo .ppk (“Add Key”) e forneça a senha para a sua chave.
  6. Acesse a checkbox de diálogo de variables ​​de ambiente do Windows (clique com o botão direito do mouse em “Computador”, clique em “Propriedades”, clique em “Configurações avançadas do sistema” ou na guia “Avançado”, clique em “Variáveis ​​de ambiente”). Adicione a seguinte variável de ambiente:

    GIT_SSH = C: \ full \ path \ para \ plink.exe

    Substitua “C: \ full \ path \ to” pelo caminho de instalação completo para PuTTY, onde plink.exe é encontrado. É provavelmente melhor adicioná-lo à seção “Variáveis ​​do usuário”. Além disso, verifique se o caminho usado para o plink.exe corresponde ao caminho usado para o Pageant (pageant.exe). Em alguns casos, você pode ter várias instalações do PuTTY, porque ele pode ser instalado junto com outros aplicativos. Usando plink.exe de uma instalação e pageant.exe de outro provavelmente irá causar problemas.

  7. Abra um prompt de comando.

  8. Se você estiver tentando se conectar a um repository git hospedado no Github.com, execute o seguinte comando:

    plink.exe git@github.com

    Se o repository git ao qual você está tentando se conectar estiver hospedado em algum outro lugar, substitua git@github.com por um nome de usuário e URL apropriados. (Assumindo o Github) Você deve ser informado de que a chave do host do servidor não está armazenada em cache e perguntada se você confia nela. Responda com um y . Isso adicionará a chave do host do servidor à lista de hosts conhecidos do PuTTY. Sem este passo, os comandos git não funcionarão corretamente. Depois de digitar, o Github informa que o Github não fornece access ao shell. Tudo bem … não precisamos disso. (Se você estiver se conectando a algum outro host, e ele lhe der access ao shell, provavelmente será melhor encerrar o link sem fazer nada.)

  9. Tudo feito! Os comandos do Git devem agora funcionar a partir da linha de comando. Você pode querer que pageant.exe carregue seu arquivo .ppk automaticamente no momento da boot , dependendo da frequência com que você precisará dele.

Segunda solução Assume o Windows, msysgit e TortoiseGit.

O TortoiseGit vem com executáveis ​​PuTTY, e uma versão especialmente modificada do plink (chamada TortoisePlink.exe) que facilitará as coisas.

  1. Instale o msysgit e o TortoiseGit conforme as instruções.
  2. Se você ainda não fez isso, gere um hash de chave conforme instruído no GitHub ou conforme instruído pelo seu host Git.
  3. Novamente, se você ainda não fez isso, converta sua chave para usar com o pageant.exe do TortoiseGit usando o puttygen.exe do TortoiseGit. As instruções estão na documentação do PuTTY, no guia útil ligado na primeira solução e em vários outros lugares no ciberespaço.
  4. Execute o arquivo pageant.exe do TortoiseGit, abra seu arquivo .ppk (“Add Key”) e forneça sua senha para a sua chave.
  5. Acesse a checkbox de diálogo de variables ​​de ambiente do Windows (clique com o botão direito do mouse em “Computador”, clique em “Propriedades”, clique em “Configurações avançadas do sistema” ou na guia “Avançado”, clique em “Variáveis ​​de ambiente”). Adicione a seguinte variável de ambiente:

    GIT_SSH = C: \ full \ path \ to \ TortoisePlink.exe

    Substitua “C: \ full \ path \ to” pelo caminho completo de instalação para o TortoiseGit, onde TortoisePlink.exe é encontrado. É provavelmente melhor adicioná-lo à seção “Variáveis ​​do usuário”. Além disso, verifique se o caminho que você usa para TortoisePlink.exe corresponde ao caminho que você usa para o Pageant (pageant.exe). Em alguns casos, você pode ter várias instalações do PuTTY, porque ele pode ser instalado junto com outros aplicativos. Usar o TortoisePlink.exe da instalação do TortoiseGit e pageant.exe de outra instalação de uma aplicação diferente (ou de uma instalação independente do PuTTY) provavelmente lhe causará problemas.

  6. Tudo feito! Os comandos do Git devem agora funcionar a partir da linha de comando. Na primeira vez que você tentar se conectar ao seu repository git, você provavelmente será informado de que a chave do host do servidor não está armazenada em cache e perguntará se você confia no servidor. Clique em “Sim”. (Este é o TortoisePlink.exe em ação.)

    Você pode querer que pageant.exe carregue seu arquivo .ppk automaticamente no momento da boot , dependendo da frequência com que você precisará dele.

Terceira solução Assume janela, msysgit e prompt de comando nativo.

  1. Instale o msysgit
  2. Certifique-se de permitir que o git seja usado no prompt de comando do MS-DOS
  3. Execute o start-ssh-agent
  4. Digite senhas SSH
  5. Tudo feito! Os comandos do Git devem agora funcionar no prompt de comando nativo.

Para qualquer pessoa que precise de instruções mais detalhadas, consulte esta página: http://help.github.com/working-with-key-passphrases/

Isso não é git, é ssh.

Eu não faço janelas, mas o ssh tem um conceito de agente que pode lembrar senhas para você. OS X tem isso habilitado por padrão. Seu cliente ssh provavelmente tem uma maneira de configurar isso.

Uma solução extra de 5 anos, 8 meses e 6 dias após a pergunta ser postada não seria uma má idéia, então aqui vai.

NOTA: Supõe que você esteja usando um computador com Windows.

  1. Faça o download do git-credential-winstore .
  2. Executá-lo! Se você tiver o GIT em sua variável de ambiente PATH , ele deve funcionar. Caso contrário, execute git-credential-winstore -i C:\Path\To\Git.exe .

Na próxima vez que você tentar se comprometer com um repository, você será solicitado a inserir suas credenciais. Isso deveria ser isso. Você não será mais solicitado por suas credenciais até que você altere sua senha.


Apenas para seu conhecimento … Suas credenciais são armazenadas no Armazenamento de Credenciais do Windows

Onde você está armazenando minhas credenciais?

Este aplicativo usa apenas o Windows Credential Store existente para armazenar suas credenciais. Você pode ver as credenciais armazenadas acessando Painel de Controle> Contas de Usuário> Gerenciador de Credenciais e escolhendo “Credenciais do Windows”. As inputs que começam com “git:” são do git-credential-winstore.

[editar – interpretar mal a pergunta, esta é uma resposta para um problema relacionado. deixando uma versão reformulada para a posteridade]

Meu caso foi que eu estava tentando empurrar para um repository que estava hospedado em um dos nossos servidores. Sempre que eu tentava fazer um push, o git me pedia minha senha (nb-password, não a frase secreta da minha chave privada).

Ao adicionar minha chave pública às chaves autorizadas no servidor, consegui obter pushs sem senha para esse servidor. E, como não havia passphrase na minha chave privada (o que é uma má prática), não precisei digitar nada.

Aqui está o comando para adicionar sua chave pública a um servidor. Ele assume que o usuário git é o usuário no servidor.

 cat .ssh/id_rsa.pub | ssh git@GIT_MASTER_IP 'cat >> .ssh/authorized_keys' 

Você pode conseguir o mesmo fazendo logon no servidor e anexando manualmente sua chave pública ao arquivo em ~/.ssh/authorized_keys

Se você definir uma senha para o seu arquivo de chave, sempre precisará digitar essa senha ao se conectar. Se você criar uma chave sem senha, não precisará digitar todas as vezes, no entanto, qualquer pessoa com access ao arquivo de chave poderá se conectar à sua conta do github.

O ssh-agent também pode funcionar. Tente executá-lo e veja se ele lembrará sua frase secreta.

Percebo que isso já está atrasado há vários anos, mas me deparei com essa questão tentando encontrar uma solução para ela e descobri algo que atende a todos os níveis de especialização, então pensei em compartilhar.

O GitHub fornece um instalador muito útil que torna tudo fácil e agradável: https://help.github.com/articles/caching-your-github-password-in-git/

Existe uma solução muito mais simples para este problema se você não se importa em ter sua senha armazenada em texto puro e você está usando o TortoiseGit.

Basta criar um arquivo _netrc em seu diretório de perfil de usuário – ou seja, no Windows 7, seria C:\Users\MyName\_netrc . Este arquivo armazenará suas informações de login neste formato:

 machine bitbucket.org login thisismyname password p455w0rD machine bitbucket.org login another_account password pwdpwdPWd machine github.com login thisismynameagain password p455w0rD 

Eu estou usando o TortoisePLink como um cliente SSH e ele funciona perfeitamente.

Caso você esteja usando o Git bash no Windows, você pode fazer o seguinte:

 eval `ssh-agent -s` ssh-add ~/.ssh/*_rsa 

ele pedirá a frase secreta no segundo comando, e é isso. Cada ação adicional que você precisará fazer (que uma vez exigiu a frase secreta) não pedirá a frase secreta (veja um exemplo na captura de canvas abaixo):

adicionando frase secreta no Git bash no Windows

Espero que ajude.

Felicidades,

Cara.

pode tentar adicionar -k arg quando você faz;

 ssh-add -k ~/.ssh/id_rsa 

Você pode criar o arquivo .bashrc no diretório home do usuário como C: / Users / youruser , e colocar lá:

 env=~/.ssh/agent.env agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; } agent_start () { (umask 077; ssh-agent >| "$env") . "$env" >| /dev/null ; } agent_load_env # agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?) if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then agent_start ssh-add elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then ssh-add fi unset env 

É roteiro, executa toda vez depois de executar o bash. Então você precisará digitar a senha apenas uma vez, quando o git-bash for iniciado!

Algumas versões do bash requerem o arquivo .bash_profile vez de .bashrc portanto, apenas no caso de clonar .bashrc:

 copy .bashrc .bash_profile