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.


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.


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 git@github.com: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.


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:git@github.com: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
    

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://yourusername@github.com".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://yourusername@github.com"]
    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


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

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ê.


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://USERNAME@github.com/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.


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.


2

use SSH

Para impedir que o GitHub peça a senha enquanto pressiona, o ideal é usar SSH ( git@github.com:...) 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://4UTHT0KEN@github.com/foo/bar

Relacionado:


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á.


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://myusername@github.com"]
    insteadOf = https://github.com

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.