Às vezes, você precisa de mais contas do que uma para acessar o Github ou Gitlab e ferramentas semelhantes. Por exemplo, você pode ter uma conta para seus projetos em casa e uma segunda conta para sua empresa.
Caso 1: várias contas no Github
Crie chaves SSH com nomes diferentes
$ ssh-keygen -t rsa -C "your_name@home_email.com"
Quando você vê esta mensagem
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user_name/.ssh/id_rsa):
Insira um nome exclusivo, por exemplo:
id_rsa_home
Em seguida, você será solicitado a inserir uma senha longa.
Então, você terá criado uma chave SSH para sua conta doméstica, agora você pode gerar uma chave SSH para sua conta corporativa.
Chame o gerador de chave SSH novamente com um segundo e-mail.
$ ssh-keygen -t rsa -C "your_name@company_email.com"
Digite o nome do arquivo
id_rsa_company
Após todas as etapas, você pode verificar se todas as chaves foram criadas.
$ ls ~/.ssh
Você deve ver uma lista de arquivos semelhante:
id_rsa_home id_rsa_company id_rsa_home.pub id_rsa_company.pub
Agora você precisa de um arquivo de configuração para organizar essas chaves.
$ cd ~/.ssh/
$ touch config
$ nano config
Adicionar ao arquivo de configuração:
# Home account
Host home.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_home
# Company account
Host company.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company
Em seguida, você excluirá as chaves em cache
$ ssh-add -D
Se você vir uma mensagem
Could not open a connection to your authentication agent.
Em seguida, digite:
eval `ssh-agent -s`
e tente novamente o comando anterior.
Em seguida, você pode verificar se suas chaves foram adicionadas:
$ ssh-add -l
2048 d4:e0:39:e1:bf:6f:e3:26:14:6b:26:73:4e:b4:53:83 /home/user/.ssh/id_rsa_home (RSA)
2048 7a:32:06:3f:3d:6c:f4:a1:d4:65:13:64:a4:ed:1d:63 /home/mateusz/.ssh/id_rsa_company (RSA)
Se você não tiver nenhuma entrada, deverá adicionar suas chaves
ssh-add ~/.ssh/id_rsa_company
ssh-add ~/.ssh/id_rsa_home
Agora você pode verificar a conexão
$ ssh -T git@home.github.com
Hi home_user! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@work.github.com
Hi company_user! You've successfully authenticated, but GitHub does not provide shell access.
Nota! Verifique o último parágrafo desta dica.
Caso 2: conta no Github e Gitlab
Este é um caso muito semelhante ao anterior. Não vou descrever passo a passo, porque todos os passos são iguais. Vou adicionar apenas o arquivo de configuração de exemplo.
Por exemplo, você tem uma conta própria para trabalhos domésticos e uma conta corporativa no gitlab.
# GITLAB
Host gitlab.company_url.com
HostName gitlab.company_url.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company
# GITHUB
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_home
As conexões de teste
$ ssh -T git@gitlab.company_url.com
Welcome to GitLab, CompanyUser!
$ ssh -T git@github.com
Hi home_user! You've successfully authenticated, but GitHub does not provide shell access.
Como você provavelmente viu, o prefixo no nome do host não é necessário.
Você pode precisar definir os detalhes do usuário git config para qualquer projeto.
É necessário distinguir suas contas.
$ cd ~/home_project
$ git config user.name "home_user"
$ git config user.email "your_name@home_email.com"