Skip to main content

Solução de problemas de autenticação para um repositório

Saiba como solucionar problemas comuns de autenticação ao clonar, enviar por push ou efetuar pull de um repositório em um codespace.

Quando você cria um espaço de código para um repositório, geralmente pode usar os comandos "pull" e "push" para efetuar alterações nesse repositório sem exigir nenhuma autenticação adicional. No entanto, ocasionalmente você pode observar erros de autenticação ao tentar executar essas operações.

Você também pode receber erros se estiver tentando interagir com um repositório diferente daquele a partir do qual você criou o codespace.

Autenticação no repositório do qual você criou o codespace

Se você estiver tentando efetuar push ou pull do repositório a partir do qual criou o codespace, mas a autenticação estiver falhando, você poderá observar um erro como ou .

Você poderá ver esses erros se usar um repositório dotfiles com GitHub Codespaces e tiver configurado o Git para usar um protocolo diferente de HTTPS para transferir dados para o repositório remoto. Por exemplo, você pode ter configurado o Git para usar o SSH incluindo linhas como as seguintes em um arquivo de configuração em seus dotfiles.

[url "git@github.com:"]
  insteadOf = https://github.com/

O GitHub Codespaces usa o protocolo HTTPS por padrão, e autentica com um configurado com acesso de leitura e gravação ao repositório por meio do qual você cria o codespace. Recomendamos que você use o HTTPS padrão e em seu codespace. As permissões geralmente são limitadas a apenas um repositório, seguindo o princípio de segurança do privilégio mínimo. A autenticação SSH não tem permissões de repositório refinadas, portanto, uma exposição acidental de sua chave SSH pode dar a alguém acesso a todos os seus repositórios.

Para usar o HTTPS padrão, remova a configuração conflitante de seus dotfiles. Se o seu repositório dotfiles contiver um script de instalação em um arquivo reconhecido como , você poderá usar a lógica como a seguinte para excluir a configuração em codespaces.

if [ -z "$CODESPACES" ]; then
  git config --global url."git@github.com".insteadOf "https://github.com"
fi

Se você estiver trabalhando em um codespace criado a partir de um repositório em que confia e precisar usar o SSH, verifique se o codespace está configurado para autenticar com uma chave SSH vinculada à sua conta do GitHub. Para saber mais, confira AUTOTITLE.

Autenticação em repositórios a partir dos quais você não criou o codespace

O em um codespace é configurado com acesso de leitura e gravação ao repositório a partir do qual você criou o codespace. Por padrão, o token não tem acesso a outros repositórios. Você pode descobrir que não pode clonar um repositório ou não pode enviar por push para um repositório clonado.

Não recomendamos atualizar manualmente o valor do em um codespace. Se o seu projeto exigir acesso a outros repositórios, você poderá conceder aos codespaces acesso a esses repositórios listando permissões adicionais na configuração do contêiner de desenvolvimento. Isso permitirá que os usuários autorizem as permissões adicionais ao criar um codespace. No entanto, ele não alterará as permissões de um codespace existente. Para saber mais, confira AUTOTITLE.

Se precisar de acesso a outro repositório em um codespace existente ou se as permissões necessárias forem específicas para você e não se aplicarem a outros colaboradores, você poderá criar um personal access token com acesso ao repositório e adicionar o token ao seu codespace. Recomendamos que você limite o acesso do token utilizando um fine-grained personal access token, selecionando apenas os repositórios aos quais você precisa ter acesso, e concedendo somente o acesso necessário à permissão de conteúdo. Para saber mais, confira AUTOTITLE.

Em seguida, você pode adicionar o token como uma variável de ambiente em um codespace ou como um segredo para GitHub Codespaces. Se você criar um segredo, deverá permitir que apenas determinados repositórios confiáveis acessem o segredo. Ao adicionar um novo segredo, você será solicitado a recarregar o codespace existente para incorporar o novo segredo. Para saber mais, confira AUTOTITLE.

Para usar o token para autenticação em seu codespace, você tem as seguintes opções.

  • Ao criar a variável de ambiente ou o segredo, você pode usar o nome . A variável é usada por padrão em operações do GitHub CLI, para que você possa clonar o repositório usando o comando .

    No entanto, se você tentar enviar para o repositório usando , o auxiliar de credencial do Git tentará usar o existente para autenticar e a autenticação falhará. Você pode substituir o auxiliar, mas isso pode causar atrito ao tentar interagir com o repositório original a partir do qual você criou o codespace.

  • Você pode clonar o repositório com uma URL que inclui o token de acesso. Substitua pelo nome da variável de ambiente ou segredo que você criou.

    git clone https://USERNAME:$YOUR-VARIABLE@github.com/OWNER/REPO`
    

    Isso armazenará o token de acesso para o repositório específico; assim, você poderá efetuar push e pull do repositório sem substituir o auxiliar de credencial existente.

    Observação

    Se você clonar dessa forma, o token ficará visível na configuração do Git. Você só deve usar esse método ao trabalhar em um codespace criado a partir de um repositório em que confia e deve limitar o escopo do token de acesso o máximo possível.