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 git pull e git push para efetuar pull e push de alterações nesse repositório sem 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 git@github.com: Permission denied (publickey) ou Host key verification failed.

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 GITHUB_TOKEN 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 GITHUB_TOKEN em seu codespace. As permissões do GITHUB_TOKEN geralmente são limitadas a apenas um repositório, seguindo o princípio de segurança de privilégios mínimos. 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 install.sh, 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 obter mais informações, confira "Gerando uma nova chave SSH e adicionando-a ao agente SSH".

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

O GITHUB_TOKEN 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 GITHUB_TOKEN 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 obter mais informações, confira "Gerenciar o acesso a outros repositórios em seu codespace".

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 limitar o acesso do token usando um fine-grained personal access token, selecionando apenas os repositórios aos quais você precisa de acesso e dando o acesso necessário somente à permissão Conteúdo . Para obter mais informações, confira "Gerenciar seus tokens de acesso pessoal".

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 efetuar pull do novo segredo. Para obter mais informações, confira "Gerenciando segredos específicos da sua conta para o GitHub Codespaces".

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 GH_TOKEN. A variável GH_TOKEN é usada por padrão em operações do GitHub CLI, para que você possa clonar o repositório usando o comando gh repo clone OWNER/REPO.

    No entanto, se você tentar enviar para o repositório usando git push, o auxiliar de credencial do Git tentará usar oGITHUB_TOKEN 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 YOUR-VARIABLE 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, para que você possa 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.