Configure SSH para o Bitbucket, GitLab ou GitHub
Crie uma conexão confiável entre seu dispositivo e o servidor remoto do repositório Git.

Introdução
Criar uma Chave SSH
Antes de qualquer coisa, precisamos e queremos criar nossa chave SSH.
Essa etapa pode ser repetida quantas vezes você preferir.
1- Abra seu terminal e crie uma pasta chamada .ssh
mkdir .ssh

2- Acesse a pasta .ssh que acabamos de criar:
cd ~/.ssh

3- Gere uma chave SSH com o comando:
⚠️ Substitua no comando abaixo:
- "example@simplescloud.io" para um email de sua preferência
- bitbucket_simplescloud_account_example para o nome da chave SSH de sua preferênciaNão preencha nenhuma pergunta solicitada no terminal → apenas pressione Enter
ssh-keygen -t rsa -b 4096 -C "example@simplescloud.io" -f bitbucket_simplescloud_account_example

4- Em nosso exemplo, podemos ver que nesse momento foram gerados dois arquivos:
bitbucket_simplescloud_account_example→ chave privada e que não deve ser compartilhada com ninguémbitbucket_simplescloud_account_example.pub→ chave pública que precisaremos para os próximos passos
Então é hora de copiarmos o conteúdo de nossa chave pública, você pode fazer isso de várias formas, mas prefiro usar o comando copyfile para isso.
copyfile em nosso artigo 👉 aquiEntão acesse ~/.ssh → copie o conteúdo da sua chave pública bitbucket_simplescloud_account_example.pub com o comando copyfile
copyfile ~/.ssh/bitbucket_simplescloud_account_example.pub

Configurando o SSH no Bitbucket
1- Acesse sua conta do Bitbucket → canto superior direito na sua foto ou avatar → Personal Settings → SSH Keys → Add Key

2- No campo Label defina um nome fácil de você identificar e no campo Key cole o conteúdo da sua chave pública copiada → Add Key

Configurando o SSH no GitLab
1- Acesse sua conta do GitLab → Edit Profile → SSH Keys e cole o conteúdo da sua chave pública → defina um nome de sua preferência → não preencha o campo de data → clique em Add key

Configurando o SSH no GitHub
1- Acesse sua conta do GitHub → canto superior direito na sua foto ou avatar → Settings → SSH and GPG Keys → New SSH Key

2- No campo Title defina um nome fácil de você identificar, no campo Key Type deixe como Authentication Key e no campo Key cole o conteúdo da sua chave pública copiada → Add SSH Key

Múltiplas Chaves SSH para Múltiplas Contas
Agora que já vimos como gerar chaves SSH e adiciona-las nas hospedagens de controle de versões git de sua preferência, é muito provável que em algum momento, você seja adicionado em um projeto, queira criar uma conta, clonar o repositório e esmagar algum código.
Porém não é tão fácil como parece, para a maioria dos repositórios git como GitLab, GitHub e Bitbucket, acontecerá uma mensagem de erro parecida com:
Essa é uma mensagem um pouco frustrante, pois inicialmente parece fazer sentido querermos usar nossa mesma chave SSH que já temos para uma outra conta recém-criada. Mas não é assim que funciona, explicando melhor essa mensagem diz que sua chave SSH já está adicionada em outra conta, então na prática não podemos "reaproveitar" a mesma chave SSH que você gerou e adicionou na conta Bitbucket pessoal como também em uma segunda conta Bitibucket que você tenha criado por exemplo.
Felizmente há uma solução simples e se aplica da mesma forma para qualquer serviço de hospedagem de controle de versão como GitLab e GitHub, mas para não ficar repetitivo, usarei um passo a passo com o Bitbucket.
Gere várias chaves SSH
Se não podemos usar a mesma chave SSH em várias contas, a solução então é ter várias chaves SSH diferentes. Para esse exemplo, vamos criar:
Chave SSH Pessoal
Chave SSH para o Projeto do Cliente
Adicione as chaves SSH ao Agente
Aqui começam as dicas legais, para fazer uso das chaves SSH recém-criadas, precisamos adicioná-las ao ssh-agent que nada mais é do que um programa nativo que contém as chaves privadas usadas para a autenticação pública.
O ssh-agent provavelmente já está sendo executado em segundo plano no seu sistema operacional, mas por precaução vamos verificar com o comando:
eval "$(ssh-agent -s)"

E adicionando novas chaves SSH usando o comando ssh-add.
ssh-add ~/.ssh/key_name_personal
ssh-add ~/.ssh/key_name_client

Torne as alterações permanentes
Estamos caminhando bem, mas você notará que os passos acima se tornam repetitivos cada vez que abrir o terminal, vamos melhorar isso tornando essas alterações permanentes.
Zsh Shell e nossos passos serão através dele, veja mais detalhes sobre o Zsh Shell em nosso artigo 👉 aqui1- Em seu terminal digite o comando:
sudo nano ~/.zshrc

2- Vá para o final do arquivo de configuração do Zsh Shell e adicione os comandos que estávamos fazendo manualmente a cada vez que abríamos o terminal + &> /dev/null ao final para evitar algum output e "travar" a exibição inicial do terminal, ou seja:
eval "$(ssh-agent -s)" &> /dev/null
ssh-add ~/.ssh/bitbucket_personal_account_wsl2 &> /dev/null
ssh-add ~/.ssh/bitbucket_simplescloud_account_wsl2 &> /dev/null
Pressione Ctrl + X → Y → Enter para salvar as alterações

Configure o SSH
Estamos quase lá, como etapa final, aqui no arquivo de configuração do SSH é que está toda a mágica! Precisamos criar um arquivo de configuração (se você ainda não o tiver) e criar os aliases ou "apelidos" personalizados que irão impor o uso ou uma chave SSH específica para um determinado host. Então vamos fazer isso!
1- Digite o comando:
sudo nano ~/.ssh/config

2- Edite o arquivo conforme o exemplo. Lembre-se de pressionar Ctrl + X → Y → Enter para salvar as alterações
Host bitbucket-personal.org
HostName bitbucket.org
User git
IdentityFile ~/.ssh/bitbucket_personal_account_wsl2
IdentitiesOnly yes
Host bitbucket-simplescloud.org
HostName bitbucket.org
User git
IdentityFile ~/.ssh/bitbucket_simplescloud_account_wsl2
IdentitiesOnly yes
De agora em diante, toda vez que você clonar um repositório de conta do cliente, simplesmente substitua bitbucket.com por bitbucket-client, por exemplo:
❌ git clone git@bitbucket.org:client/project.git
✅ git clone git@bitbucket-simplescloud.org:client/project.git
Ao fazer isso, você está ignorando uma resolução de chave pública padrão e apontando explicitamente ssh-agent para sempre resolver a conexão bitbucket-client.org usando a ~/.ssh/bitbucket_simplescloud_account_wsl2 em nosso exemplo.
Altere a URL upstream do repositório já existente
Você pode estar se perguntando o que fazer com os repositórios já existentes. Clonar todos eles um por um não parece divertido. Não é e tem solução!
Para alterar uma URL do repositório atualmente existente, use o comando git remote set-url, por exemplo:
git remote set-url origin git@bitbucket-simplescloud.org:client/project.git
Testando a Conexão
Além do comando:
eval "$(ssh-agent -s)"
Já citado para verificar se o ssh-agent está em execução, outro comando que pode ser muito útil é o:
ssh -T git@bitbucket-simplescloud.org

Observe que no comando já estamos usando o bitbucket-simplescloud.org que é o alias ou "apelido" configurado no arquivo ~/.ssh/config. Desta forma conseguimos testar que a conexão foi realizada com sucesso.
Conclusão
Esta solução resolveu o meu problema e atendeu bem.






