29 agosto 2019

Michelly Oliveira

Bitbucket: Unauthorized - Fatal: Could not read from remote repository

 



Recentemente estava tentando sincronizar meu repositório local com o remoto, no Bitbucket (https://bitbucket.org), utilizando o Sourcetree (https://www.sourcetreeapp.com/) via HTTPS e, por algum motivo ainda não identificado, o mesmo ficou abrindo o alerta de preenchimento de senha infinitas vezes, mesmo já estando conectado e inserindo a senha correta.

Fui então tentar a conexão via SSH. Criei a chave, inseri no Sourcetree e também no repositório do Bitbucket, conforme próprio tutorial do Bitbucket.

Finalmente consegui baixar o repositório remoto para a pasta local (pull), mas ao tentar sincronizar o local com o remoto (push) me apareceu o famigerado:
Can't git push to Bitbucket: Unauthorized - fatal: Could not read from remote repository 
Voltando a novas pesquisas de como resolver esse problema, acabei descobrindo que a chave SSH não deve ser inserida no repositório, mas sim no usuário. Pois a chave inserida no repositório dá acesso apenas à leitura do mesmo.

Dessa forma, resolvi escrever esse pequeno tutorial de como fazer Sourcetree e Bitbucket funcionarem utilizando o acesso SSH.

Aqui irei descrever como:
  1. Criar a chave SSH
  2. Inserir a chave SSH no Sourcetree
  3. Inserir a chave SSH no Usuário do Bitbucket.

Os ambientes/sistemas utilizados neste tutorial foram: Windows 10, Sourcetree ver.: 3.2.6 com o Putty Key Generator Release 0.70.2-Sourcetree e o Bitbucket cuja última release foi em 13/08/2019.

Passo 1 - Criar Chave SSH

O primeiro passo é  a criação do par de chaves SSH. Caso você já possua um par de chaves, passe para o segundo passo (Inserir Chave SSH no Sourcetree).

  1. No Sourcetree, acesse a opção do menu "Tools -> Create or import SSH Keys"
  2. No aplicativo que abrir (Putty Key Generator), clique no botão "Generate", será exibida uma barra de progresso. Para que a criação da chave seja mais rápida e efetiva, movimente o mouse aleatoriamente enquanto a barra é preenchida.
  3. No campo "Key passphrase" insira uma senha para este par de chaves (guarde a senha com cuidado, a utilizaremos futuramente).
  4. No campo "Confirm passphrase" insira a mesma senha do campo anterior.
  5. Após a criação da chave, clique no botão "Save public key", para salvar em um local seguro a chave pública criada.
  6. Após salvar a chave pública, clique no botão "Save private key", para salva a chave privada criada.

Finalizamos a criação do par de chaves, agora vamos inserir a chave SSH no Sourcetree.

Passo 2 - Inserir Chave SSH no Sourcetree

Após a criação do par de chaves, ou caso você já tenha uma chave, é chegado o momento de inserir a chave no Sourcetree.

  1. No Sourcetree, acesse a opção do menu "Tools -> Launch SSH Agent..."
  2. Caso já exista alguma chave cadastrada, será solicitada a senha da mesma. Caso contrário, será exibida a janela do aplicativo Pageant Key List
  3. No Pageant Key List, clique no botão "Addkey".
  4. Será aberta uma janela do Explorer para que você selecione a chave privada salva no passo 1. Selecione o arquivo.
  5. Insira a senha do par de chaves. Feche a janela no botão  "Close"

Pronto, agora vamos inserir a chave SSH no Bitbucket.

Passo 3 - Inserir Chave SSH no Bitbucket

Agora vamos para o passo final que é inserir a chave no Bitbucket. Meu Bitbucket está em inglês, ok.

  1. No Bitbucket, acesse seu perfil de usuário. Clique no seu avatar (foto) que encontra-se no canto inferior esquerdo e selecione a opção "View Profile".
  2. No menu lateral que aparece na nova tela, clique em "Settings".
  3. No novo menu lateral da tela Settings, selecione "SSH keys" que encontra-se na categoria "Security".
  4. Na nova tela, clique no botão "Add key".
  5. No modal que abrir, insira um nome para a sua chave, no campo "Label"
  6. Depois, copie do program a Putty Key Generator (Passo 1) o conteúdo do campo "Key" e cole no campo "Key" do modal do Bitbucket.
  7. Finalize clicando no botão "Add key".
  8. A lista de chaves sera atualizada.

Não esqueça ou perca a senha da chave SSH, ela será necessária quando for dar PUSH nos projetos que utilizam a chave.

Assim finalizamos o processo para fazer com que o Sourcetree utilize SSH para realizarmos a sincronização de nossos repositórios.