O GitHub fornece duas maneiras de se conectar a repositórios git, principalmente SSH e HTTPS. O HTTPS exige que você forneça um token de acesso sempre que fizer push para um repositório. O SSH permite que você envie código sem lembrar seu nome de usuário e token toda vez que você enviar código para um repositório do GitHub.
Então você tem uma conta pessoal do GitHub—tudo está funcionando perfeitamente. Mas então, você consegue um novo emprego e agora precisa ter a capacidade de enviar e receber várias contas. Como você faz isso? Eu vou te mostrar como!
1. Criar uma nova chave SSH
Precisamos gerar uma chave SSH exclusiva para nossa segunda conta do GitHub.
ssh-keygen -t rsa -b 4096 -C "your-email-address"
Substitua pelo seu endereço de e-mail.
Generating public/private rsa key pair. Enter file in which to save the key (/home/vaati/.ssh/id_rsa):
Tenha cuidado para não substituir sua chave existente para sua conta pessoal padrão. Em vez disso, quando solicitado, salve o arquivo como id_rsa_COMPANY. No meu caso, salvei o arquivo em ~/.ssh/id_rsa_work.
Enter file in which to save the key (/home/vaati/.ssh/id_rsa): /home/vaati/.ssh/id_rsa_work
Depois de executar o comando acima, você receberá um prompt para inserir uma senha.
Enter passphrase (empty for no passphrase):
Uma senha deve ser fácil de lembrar, mas difícil para um bot ou computador adivinhar. Você pode usar uma linha de poesia favorita, por exemplo, ou uma linha de um filme que você gosta.
Você será solicitado a inserir a senha novamente
Enter same passphrase again:
Depois de digitar a senha novamente, a chave é salva no local padrão que você especificou e dois arquivos são criados conforme mostrado abaixo.
Your identification has been saved in /home/vaati/.ssh/id_rsa_work Your public key has been saved in /home/vaati/.ssh/id_rsa_work.pub The key fingerprint is: SHA256:PLusNPF6nf5e2jr/z57EB1gl5YW43Tw55TPqhTu4z3g [email protected] The key's randomart image is: +---[RSA 4096]----+ | ..o+| | . .+o| | o.++| | . .o.*+| | . S . + =| | o o o.o | | o o. .o +o.| | . +..o.+E..o| | ooo..=O*++*| +----[SHA256]-----+
Uma é uma chave pública e a outra é uma chave privada. Você precisará da chave para fazer uma conexão com sua conta do GitHub. Para visualizar o conteúdo da chave salva, emita o comando a seguir.
cat .ssh/id_rsa_work.pub
Copie e armazene a chave em um arquivo de texto em seu computador, pois precisaremos adicioná-la à sua segunda conta do GitHub.
2. Anexar a nova chave
Em seguida, faça login na sua segunda conta do GitHub, clique no menu suspenso ao lado da foto do perfil no canto superior direito, selecione as configurações e clique em SSH and GPG KEYS.
Em seguida, adicione a chave que você copiou anteriormente. Sinta-se à vontade para dar o título que desejar.
3. Adicionar chave SSH ao agente
Em seguida, como salvamos nossa chave com um nome exclusivo, precisamos informar ao SSH sobre isso. Dentro do Terminal, digite: ssh-add ~/.ssh/id_rsa_work
. Se for bem-sucedido, você verá uma resposta de Identidade adicionada.
$ ssh-add ~/.ssh/id_rsa_work Enter passphrase for /home/vaati/.ssh/id_rsa_work: Identity added: /home/vaati/.ssh/id_rsa_work ([email protected])
Agora temos dois conjuntos de chaves SSH em nossa máquina, eles residem no .ssh diretório, e você pode visualizá-los.
vaati@vaati-Yoga-9-14ITL5:~$ cd .ssh vaati@vaati-Yoga-9-14ITL5:~/.ssh$ ls config id_rsa id_rsa.pub id_rsa_work id_rsa_work.pub known_hosts known_hosts.old
4. Criar um arquivo de configuração
Fizemos a maior parte da carga de trabalho; mas agora precisamos de uma maneira de especificar quando desejamos enviar para nossa conta pessoal e quando devemos enviar para nossa conta corporativa. Para isso, vamos criar um configuração Arquivo.
touch ~/.ssh/config vim config
Se você não estiver confortável com o Vim, sinta-se à vontade para abrir o arquivo com qualquer editor de sua escolha. Cole o trecho a seguir.
#Default GitHub Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa
Esta é a configuração padrão para enviar para nossa conta pessoal do GitHub. Observe que podemos anexar um arquivo de identidade ao host. Vamos adicionar outro para a conta da empresa. Diretamente abaixo do código acima, adicione:
Host github.com-work HostName github.com User git IdentityFile ~/.ssh/id_rsa_work
O arquivo de configuração agora deve ficar assim:
#Default GitHub Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa Host github.com-work HostName github.com User git IdentityFile ~/.ssh/id_rsa_work
Desta vez, em vez de configurar o host para github.com
nós o nomeamos como github.com-work
. A diferença é que agora estamos anexando o novo arquivo de identidade que criamos anteriormente: id_rsa_work.
Salve a página e saia!
5. Experimente!
É hora de ver se nossos esforços foram bem sucedidos. Crie um diretório de teste e adicione um teste.txt Arquivo.
mkdir TEST cd TEST touch test.txt
Inicialize o git e crie o primeiro commit.
git init git add . git commit -m "first commit'
Faça login na conta da sua empresa, crie um novo repositório e dê a ele o nome “test_repository”. Depois que o novo repositório for criado, o GitHub fornecerá algumas próximas etapas, conforme mostrado abaixo.
Como já temos um repositório existente na linha de comando, só precisamos adicionar e enviar as alterações. Desta vez, em vez de empurrar para [email protected]
estamos usando o host personalizado que criamos no arquivo de configuração: [email protected]
.
Usar
[email protected]
Ao invés de
[email protected]
Vamos empurrar as mudanças
git remote add origin [email protected]:kaththy/Test.git git push origin main Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Delta compression using up to 8 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 220 bytes | 220.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To github.com-work:kaththy/Test.git * [new branch] main -> main Branch 'main' set up to track remote branch 'main' from 'origin'
Retorne ao GitHub e agora você deve ver seu repositório. Lembrar:
- Ao enviar para sua conta pessoal, prossiga como sempre.
- Para sua conta corporativa, certifique-se de usar
[email protected]
como o anfitrião.
Conclusão
Este guia abordou como trabalhar com várias contas usando SSH. Ele também abordou como enviar código para várias contas do GitHub da mesma máquina.
Este post foi atualizado com contribuições de Esther Vaati. Esther é desenvolvedora de software e escritora da Envato Tuts+.