Pesquisa de site

Como consertar o Git sempre solicitando credenciais de usuário para autenticação HTTP(S)


Para acessar ou trabalhar com um repositório Git remoto, você pode usar os protocolos SSH ou HTTP(S); com o primeiro, quando se trata de repositórios privados, você pode simplesmente configurar chaves SSH sem uma senha, o que permite transferir dados com segurança sem digitar seu nome de usuário e senha.

No entanto, com HTTP(S), cada conexão solicitará que você insira seu nome de usuário e senha (quando o Git precisar de autenticação para um contexto de URL específico) – os usuários do Github sabem disso muito bem.

Neste artigo, mostraremos como consertar o Git sempre solicitando credenciais de usuário para acesso por HTTP(S). Explicaremos diferentes maneiras de evitar que o Git solicite repetidamente nome de usuário e senha ao interagir com um repositório remoto através de HTTP(S).

Como instalar o Git no Linux

Se você não tiver o pacote Git instalado em seu sistema, execute o comando apropriado para sua distribuição Linux para instalá-lo (use o comando Sudo quando necessário).

sudo apt install git      [On Debian/Ubuntu]
yum install git           [On CentOS/RHEL/Fedora]
sudo zypper install git   [On OpenSuse]
sudo pacman -S git        [On Arch Linux]

Inserindo nome de usuário e senha do Git no URL remoto

Como mencionamos anteriormente, ao clonar um repositório Git remoto sobre HTTP(S), cada conexão precisa de um nome de usuário e uma senha conforme mostrado.

Para evitar que o Git solicite seu nome de usuário e senha, você pode inserir as credenciais de login no URL conforme mostrado.


sudo git clone https://username:[email /username/repo_name.git
OR
sudo git clone https://username:[email /username/repo_name.git local_folder

A principal desvantagem deste método é que seu nome de usuário e senha serão salvos no comando no arquivo de histórico do Shell.

bem como no arquivo .git/config na pasta local, que apresenta um risco à segurança.

cat .git/config

Observação: para usuários do Github que ativaram a autenticação de dois fatores ou estão acessando uma organização que usa logon único SAML, você deve gere e use um token de acesso pessoal em vez de inserir sua senha para HTTPS Git (conforme mostrado nos exemplos de resultados neste guia). Para gerar um token de acesso pessoal, no Github, acesse Configurações => Configurações do desenvolvedor => Tokens de acesso pessoais.

Salvando nome de usuário e senha do repositório Git remoto no disco

O segundo método é usar o auxiliar de credenciais do Git para salvar seu nome de usuário e senha em um arquivo simples no disco, conforme mostrado.

git config credential.helper store				
OR
git config --global credential.helper store		

De agora em diante, o Git gravará credenciais no arquivo ~/.git-credentials para cada contexto de URL, quando acessado pela primeira vez. Para visualizar o conteúdo deste arquivo, você pode usar o comando cat conforme mostrado.

cat  ~/.git-credentials

Para comandos subsequentes para o mesmo contexto de URL, o Git lerá suas credenciais de usuário do arquivo acima.

Assim como o método anterior, esta forma de passar credenciais de usuário para o Git também não é segura, pois o arquivo de armazenamento não é criptografado e é protegido apenas pelas permissões padrão do sistema de arquivos.

O terceiro método explicado abaixo é considerado mais seguro.

Armazenando em cache o nome de usuário e a senha do repositório Git remoto na memória

Por último, mas não menos importante, você também pode usar o auxiliar de credenciais do Git para salvar temporariamente suas credenciais na memória por algum tempo. Para fazer isso, emita o seguinte comando.

git config credential.helper cache
OR
git config --global credential.helper cache

Após executar o comando acima, ao tentar acessar um repositório privado remoto pela primeira vez, o Git solicitará seu nome de usuário e senha e os salvará na memória por algum tempo.

O tempo de cache padrão é 900 segundos (ou 15 minutos), após os quais o Git solicitará que você insira seu nome de usuário e senha novamente. Você pode alterá-lo da seguinte forma (1.800 segundos=30 minutos ou 3.600 segundos=1 hora).

git config --global credential.helper 'cache --timeout=18000'
OR
git config --global credential.helper 'cache --timeout=36000'

Para obter mais informações sobre Git e auxiliares de credenciais, consulte suas páginas de manual.

man git
man git-credential-cache
man git-credential-store

Este guia foi útil? Deixe-nos saber através do formulário de feedback abaixo. Você também pode compartilhar quaisquer perguntas ou opiniões sobre este tópico.