Configurar clientes Git, como o GitHub para Windows, para não solicitar autenticação

Eu instalei o GitHub para Windows e também GitExtensions e tenho várias versões do git.exe no meu caminho.

insira a descrição da imagem aqui

C:\Users\Rajat\AppData\Local\GitHub\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\cmd\git.exe C:\Users\Rajat\AppData\Local\GitHub\PortableGit_93e8418133eb85e81a81e5e19c272776524496c6\bin\git.exe E:\cygwin\bin\git.exe C:\Program Files (x86)\Git\cmd\git.exe C:\Program Files (x86)\Git\bin\git.exe 

Agora, quando eu faço o git push origin master com qualquer um dos últimos três git.exe , ele pede meu nome de usuário. Mas o Portable Git não pede nome de usuário. Veja a seguinte imagem:

insira a descrição da imagem aqui

O personagem em forma de coração é apenas um ^C então ignore isso.

Como a autenticação está sendo tratada neste caso? Em última análise, eu quero que os últimos três Gits não peçam autorização. Como isso é possível?

Eu encontrei dois arquivos extras no Git do GitHub, mas duvido que eles sejam importantes:

insira a descrição da imagem aqui

    Para o próprio GitHub para Windows, Paul Betts ( equipe do GitHub ) gentilmente lembra a todos que o G4W já inclui um auxiliar de credencial (baseado no CryptProtect e suponho que a function CryptProtectData )
    Veja sua resposta abaixo .

    Para quem não usa o G4W, continue lendo.


    Para adicionar à minha resposta anterior (ao enviar para o GitHub através do console / linha de comando):

    Um arquivo como ~/.netrc (no Unix) ou %HOME%/_netrc (no Windows) pode ajudá-lo a evitar a inserção de sua credencial para cada push do git que você faria no GitHub .

    Você pode armazenar quantas credenciais você precisar em um arquivo netrc .
    (para GitHub ou outros provedores de hospedagem de recompra)
    Mas:

    • você não quer armazenar sua conta principal de senha do GitHub
    • você não quer aqueles em um arquivo de texto simples.

    As seções a seguir abordam esses problemas:


    Ative a autenticação de dois fatores (2FA) na sua conta do GitHub

    (3 de setembro de 2013)

    Configure o 2FA por meio de um aplicativo , sempre por meio de um aplicativo, nunca por meio de um SMS de texto, se você puder evitá-lo.

    A razão é que, através desse processo de ativação, você tem access à sua chave secreta de dois fatores , que é usada para gerar a autenticação do segundo fator a cada 30 segundos:

    string secreta de dois fatores

    Dessa forma, você pode acessar qualquer cliente GAuth ( Google Authenticator ) , digitar a mesma chave secreta 2FA e ver exatamente o mesmo código que receberia por mensagem SMS.
    Exceto que, se você não tem serviço telefônico, ainda funciona;)

    Claro, o primeiro cliente a usar é o GAuth no seu telefone Android ou no seu iPhone.

    GAuth no Android

    Isso significa que você não precisa esperar por um SMS e manter seu 2FA em seu telefone.

    No entanto, ter sua chave secreta permite que você não fique limitado a um cliente em seu telefone.
    Você pode ir para qualquer outro cliente, como:

    • JAuth , um bonito cliente desktop de dois fatores, ( codeon GitHub )
    • html5-google-authenticator : uma página da web do cliente do Google Authenticator do GAuth, na qual você pode ver seu token gerado a cada 30 segundos, como você os veria em seu telefone ou por SMS.
    • uma bandeja do sistema de mesa
    • uma extensão do navegador (como o gauth-authenticator for FireFox)

    Para todos esses clientes (em seu telefone com o GAuth, ou com um cliente de desktop ou uma página da web), você precisará da sua chave secreta de dois fatores .

    Se você ativou seu 2FA através de SMS:

    • você não sabe sua chave secreta
    • você não pode usar nenhum outro cliente do GAuth
    • você está limitado a receber seu token através do seu telefone (se você tiver um serviço de telefone e / ou se tiver seu telefone)

    Nota: se você adicionou uma chave no seu cliente Gauth no Android, sem memorizar primeiro a chave secreta, nem tudo está perdido .
    (mas você precisa de um telefone enraizado embora)

     $ adb shell # sqlite3 /data/data/com.google.android.apps.authenticator/databases/databases sqlite> select * from accounts; 1|your@email.address|your2factorkey|0|0 sqlite> .quit #exit 

    Não se esqueça de salvar e salvar os códigos de recuperação associados (na seção Account Settings da Account Settings da Account Settings do GitHub ):

    Código de recuperação

    (Veja também a última seção sobre onde salvar esses códigos)


    Criptografar seu arquivo _netrc

    (veja o auxiliar de credencial netrc com git1.8.3 + : gpg encryption)

    Você precisa criptografar nesse arquivo pelo menos essas duas credenciais:

     machine github.com login username password xxxx protocol https machine gist.github.com login username password xxxx protocol https 

    Você então mantém apenas um ~/.netrc.gpg ou %HOME%/_netrc.gpg

    Mas, se você ativar a nova autenticação de dois fatores descrita acima, ” xxxx ” não será sua conta do GitHub: consulte a próxima seção sobre “Token de access pessoal”.


    Gerar um token de access pessoal

    Você não poderá enviar sua senha do GitHub se tiver ativado o 2FA.

    Anonymous access to user/repo.git denied

    Aqui está o que você veria (a parte do gpg é porque eu uso o auxiliar de credencial netrc ):

     C:\Users\VonC\prog\git\git>git push origin Using GPG to open %HOME%/_netrc.gpg: [gpg2 --decrypt %HOME%/_netrc.gpg] You need a passphrase to unlock the secret key for user: "auser " 2048-bit RSA key, ID A2EF56, created 2012-09-12 (main key ID DC43D6) remote: Anonymous access to VonC/git.git denied. <===== fatal: Authentication failed for 'https://VonC@github.com/VonC/git/' <===== 

    Então, vá para a seção Developer da sua conta do GitHub (subseção Personal access tokens ) e gere um token de access pessoal :

    Token pessoal

    Esse token não exigirá uma autenticação de dois fatores : você pode usá-lo como senha em seu arquivo _netrc e poderá apenas enviar para o GitHub.

    Mas a diferença com sua senha principal da conta do GitHub é:
    Você pode revogar um token de access pessoal (e gerar um novo), mantendo a senha principal inalterada.

    Se você tivesse criptografado sua senha principal do GitHub no seu arquivo ~/.netrc.gpg , você pode substituí-la pelo seu novo token pessoal:

     gpg -d %HOME%\_netrc.gpg | sed "s/yourPassord/YourPersonalAccessToken/g" | gpg -e -r auser --yes -o %HOME%\_netrc.gpg 

    Em várias linhas para facilitar a leitura:

     gpg -d %HOME%\_netrc.gpg | sed "s/yourPassord/YourPersonalAccessToken/g" | gpg -e -r auser --yes -o %HOME%\_netrc.gpg 

    Isso funciona até mesmo no Windows, com a ajuda do comando GoW (Gnu no Windows) , semelhante ao unix, que inclui o sed .


    Salvar suas credenciais do GitHub

    Eu recomendo um armazenamento de credenciais on-line como lastpass.com

    Você precisa salvar:

    • Sua senha da conta do GitHub
    • Sua chave secreta 2FA
    • Seu código de recuperação 2FA
    • Seu token pessoal

    Última passagem

    Se você estiver usando o GitHub para Windows, tudo o que você precisa fazer é:

    1. Certifique-se de ter feito login no aplicativo GUI pelo menos uma vez
    2. Clique no link “Git Shell”

    O GitHub já resolveu esse problema para você na linha de comando, tanto para controles remotos baseados em HTTPS quanto em SSH.

    https://help.github.com/articles/set-up-git

    A seção de armazenamento em cache da senha diz:

    Se você não quiser usar o GitHub para Windows, você pode baixar o assistente para o seu sistema operacional aqui:

    Faça isso e qualquer outro git.exe funcionará sem pedir senha. 🙂