Como garantir que o Git não solicite meu nome de usuário e senha do GitHub?

172

Estou trabalhando com um repositório no GitHub e sempre que tento enviar algo, ele solicita meu nome de usuário e senha do GitHub. Eu não quero fazer isso.

Eu tentei as instruções sobre como configurar seu email no Git , ou seja, configurar as variáveis ​​do Git github.user e github.token, mas isso não fez nenhuma diferença.

Não entendo por que isso está acontecendo.

picardo
fonte
Você precisa armazenar em cache a senha: help.github.com/articles/set-up-git#password-caching
Piotr Usewicz:

Respostas:

33

Você precisa configurar um agente ssh no qual você precisa se autenticar apenas uma vez. Veja esta resposta em SO para um tutorial.

Benjamin Bannier
fonte
1
Mas esta solução é para frases da família ssh. O problema é que o git usa "git push", que não aciona o ssh-agent, presumo. (Eu já fiz isso, então eu sei que não funciona.)
Picardo
2
@ Ricardo: Eu fiz isso, e realmente funciona.
Daenyth 14/10/10
213

Hoje tive um problema semelhante: eu estraguei tudo na minha cópia de trabalho, então decidi renomear o diretório e clonar meu projeto novamente no github. Mas, depois disso, tive que digitar minha senha para fazer qualquer solicitação pull / push, em vez de digitar a senha apenas uma vez como costumava fazer.

Isso porque hoje eu usei o protocolo https para clonar o projeto! Para verificar qual protocolo você está usando, basta executar

git config -l

e veja a linha que começa com 'remote.origin.url'.

Para alternar protocolos:

git config remote.origin.url [email protected]:the_repository_username/your_project.git

the_repository_usernamee your_projectdeve ser substituído pelo nome do repositório apropriado e o proprietário desse repositório. O nome de usuário será seu se você for o proprietário do repositório ou o nome de usuário do proprietário do repositório caso contrário.

Sergio Morstabilini
fonte
5
Funcionou para mim. Uma coisa é que o URL não contém meu nome de usuário, mas o endereço de repo, como aparece no github:[email protected]:some-user/repo-name.git
B Seven
1
Nota: o Google me trouxe aqui. Eu tinha o remote.origin.urlconjunto para o método https e nem percebi que havia métodos httpsvs. sshEsta URL me ajudou a ver o óbvio: help.github.com/articles/…
Chris K
Existe alguma maneira de passar a senha também?
Zishe 30/07/2012
Q para aqueles com conhecimento de Git: Alguma diferença (ou preferência) entre os git config remote.origin.url ...usados ​​acima, vs. git remote set-url origin ...?
Daryn
Eu não conseguia descobrir como remover uma origem errada como essa. A resposta é:git remote rm origin
Vacilando
30

Se você estiver usando HTTPS em vez de SSH, poderá seguir isto:

  1. Encontre seu URL remoto (remote.origin.url) com

    git config -l
    

    graças a Sergio Morstabilini

  2. Seu URL remoto será assim: https: // {USERNAME} @ github.com / {USERNAME} / {REPONAME} .git

  3. Execute este comando:

    git config remote.origin.url https://{USERNAME}:{PASSWORD}@github.com/{USERNAME}/{REPONAME}.git
    
Eray
fonte
2
meu próprio nome de usuário contém @, não funcionou para mim.
Codigo_idiot 20/08/2014
Mas se não (você não precisa usar seu email), ele funciona perfeitamente! Obrigado.
Killah
4
Se o seu nome de usuário incluir um @, você precisará codificá-lo por URL. meyerweb.com/eric/tools/dencoder
Tim Bodeit
1
Você deve omitir sua senha por motivos de segurança.
Zygimantus
3
cuidado, a senha será armazenada em texto sem formatação dentro do .git/configarquivo!
Amro
26

Prefiro usar HTTPS, acho mais fácil e seguro do que configurar as chaves ssh.

Usando HTTPS, você pode impedir que o git solicite ao seu nome de usuário controles remotos do github com o seguinte:

git config --global url."https://[email protected]".insteadOf "https://github.com"

E você pode pelo menos reduzir a frequência que o git solicita sua senha com:

git config --global credential.helper 'cache --timeout=28800'

Onde 28800 são 8 horas. Eu uso essa configuração para inserir minha senha apenas uma vez, quando inicio meu dia útil.

Depois disso, você terá essas entradas dentro do seu ~/.gitconfig

[url "https://[email protected]"]
    insteadOf = https://github.com

[credential]
    helper = cache --timeout=28800

Fonte:

http://git-scm.com/docs/git-credential-cache

http://git-scm.com/docs/git-config

stefanmaric
fonte
6

Quando você configura uma chave ssh para o github, se ela não for a chave padrão, você precisará adicionar uma seção ao seu ~/.ssh/config

Host *github.com
    User git
    IdentityFile ~/.ssh/github_id_rsa
Daenyth
fonte
6

Se você estiver no Windows usando HTTPS, tente o Git Credential Store - ele usa o Windows Credential Store para armazenar seu nome e senha.

Windows Credential Store for Git
This application is a small helper app designed to follow the 
git credentials API as defined by the Git Documentation.

Installation
1. Download the git-credential-winstore.exe application
2. Run it! If you have GIT in your PATH, it should just work.

Da próxima vez que você digitar seu nome e senha, eles serão lembrados por você.

Brian Burns
fonte
1
Obrigado. O projeto foi renomeado para Git-Credential-Manager-for-Windows .
Michael S.
5

Além disso, se você deseja que sua senha seja solicitada todas as vezes, mas não apenas seu nome de usuário, configure o controle remoto como HTTPS com um nome de usuário.

git config remote.origin.url https://[email protected]/repo_owner/repo_name

Depois disso, você sempre será solicitado a fornecer sua senha, mas não o seu nome de usuário.

É assim que eu prefiro, pois gosto de ser forçado a digitar minha senha do github antes de compartilhar com o mundo.

David Jeske
fonte
2

As coisas são um pouco diferentes se você estiver usando autenticação de dois fatores como eu. Como não encontrei uma boa resposta em outro lugar, colocarei uma aqui para que talvez eu possa encontrá-la mais tarde.

Se você estiver usando autenticação de dois fatores, a especificação de nome de usuário / senha não funcionará - você terá acesso negado. Mas você pode usar um token de acesso ao aplicativo e usar o assistente de credencial do git para armazená-lo em cache. Aqui estão os links pertinentes:

E não me lembro de onde vi isso, mas quando você solicita seu nome de usuário, é onde você coloca o token de acesso ao aplicativo. Em seguida, deixe a senha em branco. Trabalhou no meu mac.

John Berryman
fonte
2

use SSH

Para impedir que o GitHub peça a senha enquanto pressiona, o ideal é usar SSH ( [email protected]:...) em vez do URL HTTPS ( https://github.com/...) e adicionar sua chave SSH à sua conta do GitHub . Consulte: Qual URL remoto devo usar?

GitHub - Clone com SSH

um ajudante de credencial

Caso contrário, se você realmente precisar usar HTTPS, para armazenar em cache sua senha do GitHub no Git , use um auxiliar de credencial para dizer ao Git para lembrar seu nome de usuário e senha do GitHub toda vez que conversar com o GitHub.

  • Mac: git config --global credential.helper osxkeychain( osxkeychain helperé obrigatório),
  • Janelas: git config --global credential.helper wincred
  • Linux e outros: git config --global credential.helper cache

.netrc

Outro método é usar a configuração de seu usuário / senha ~/.netrc( _netrcno Windows), por exemplo

machine github.com
login USERNAME
password PASSWORD

OAuth

Use o token OAuth ( token da API pessoal ) para enviar as alterações, por exemplo

git push https://[email protected]/foo/bar

Relacionado:

kenorb
fonte
1

Além disso, se você estiver usando o Windows, poderá usar:

$ git config --global credential.helper wincred

você só precisa entrar mais uma vez e o git se lembrará.

William Earl Cheaqui
fonte
1

Pedir o nome de usuário é chato para mim, mas pedir uma senha é bom, pois garante que você realmente deseja tornar público suas alterações ...

Então eu apenas adiciono isso ao meu ".gitconfig"

[url "https://[email protected]"]
    insteadOf = https://github.com
ViToni
fonte
0

Use o Git Credential Manager para Windows , se você estiver no Windows.

Este projeto inclui :

  • Armazenamento seguro de senhas no Windows Credential Store
  • Suporte à autenticação multifatorial para o Visual Studio Team Services
  • Suporte de autenticação de dois fatores para o GitHub
  • Suporte de uso e geração de token de acesso pessoal para o Visual Studio Team Services e o GitHub
  • Suporte de modo não interativo para o Visual Studio Team Services suportado pelo Diretório do Azure
  • Autenticação Kerberos para Team Foundation Server
  • Configurações opcionais para otimização do agente de construção

Basta baixar a versão mais recente e instalar.

Como usar

Você não Funciona magicamente quando são necessárias credenciais.

Jalal
fonte