Guia: gerenciando 2 ssh keys do Github no seu pc
Tags: github, tutorial, braziliandevs, macos
Published: 2021-10-05 00:35:20

### resumo:
Você tem o computador da firma (macOs) e as vezes quer fazer um commit no seu repositório particular. Esse é um guia rápido com comandos para trocar as ssh-keys e poder trabalhar com sua conta particular e da firma quando quiser!

~ mas o que é esse guia:
Esse é um guia rápido para consultar quando você sabe <b>o que</b> tem que fazer, mas não lembra <b>como</b> fazer...
Eu sempre uso esse [artigo](https://devqa.io/manage-multiple-github-accounts-same-machine/) como referência para me salvar nesses momentos, mas ele é em inglês e acho justo manter essas informações em português também.

### passos:
#### 1 - Criando uma ssh-key para seu github pessoal:

no terminal você digita o comando para gerar a ssh-key, o seu e-mail e um nome para sua key: aqui vamos chamar de "id_rsa_deva".

```
$ ssh-keygen -t rsa -C "email@pessoal.com" -f "id_rsa_deva"
```

O github explica sobre como criar e adicionar uma ssh-key [aqui](https://docs.github.com/pt/authentication/connecting-to-github-with-ssh/about-ssh).

#### 2 - Criando uma ssh-key para seu github profissional:

no terminal você digita o comando para gerar a ssh-key, o seu e-mail profissional e um nome para sua key: aqui vamos chamar de "id_rsa_firma".

```
$ ssh-keygen -t rsa -C "email@firma.com" -f "id_rsa_firma"
```

~ o github explica sobre como criar e adicionar uma ssh-key [aqui](https://docs.github.com/pt/authentication/connecting-to-github-with-ssh/about-ssh).

~ como ver a(s) ssh-key(s) salvas:
```
$ ls -al ~/.ssh
# Vai mostrar a lista de arquivos na pasta do .ssh (se você já tiver alguma)
```

exemplo do meu terminal:
```
anac  ... ... config
anac  ... ... id_rsa_deva
anac  ... ... id_rsa_deva.pub
anac  ... ... id_rsa_firma
anac  ... ... id_rsa_firma.pub
```

#### 3 - Gerenciando mais de uma ssh-key

Agora que temos duas ssh-keys vamos fazer nossa vida ficar um pouco mais fácil de gerenciar isso usando a opção de config do ssh.

~ se você ainda não tem o arquivo de <b>config</b> digita os 3 comandos no terminal, se já tem o arquivo pula o segundo comando:
```
$ cd ~/.ssh/
$ touch config           // Cria o arquivo se ele não existe
$ nano config            // Abre o arquivo para edição
```
a. Você vai adicionar as 2 keys no arquivo (pode copiar e colar):

```
# Minha conta pessoal
Host github.com-deva
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_deva

# Minha conta da firma
Host github.com-firma
   HostName github.com //ou o endereço de github da firma
   User git
   IdentityFile ~/.ssh/id_rsa_firma
```

~ embaixo no arquivo do terminal ele diz quais são os comandos: para salvar "write out", para sair "exit"

b. Reinicar o ssh-agent para ele receber as mudanças:
```
eval "$(ssh-agent -s)"
```
c. Adicionar e registrar as novas ssh-keys no ssh-agent:
```
ssh-add ~/.ssh/id_rsa_deva
ssh-add ~/.ssh/id_rsa_firma
```

## OK! agora vem a parte legal:

#### Agora você tá querendo ser apenas uma <b>deva desbravadora de códigos e vai usar sua conta pessoal</b>
avisa o ssh-agent para ele usar sua ssh-key especial:

```
$ ssh-add -D  //remove as ssh's do agente
$ ssh-add ~/.ssh/id_rsa_deva  // adiciona a tua ssh de deva
```


#### Quando você for vestir o <b>chapéu de trabalhadora e precisa fazer commits nos repositórios da firma</b>
você avisa o agent para usar a sua ssh-key da firma:
```
$ ssh-add -D  //remove as ssh's do agente
$ ssh-add ~/.ssh/id_rsa_company  // adiciona a tua ssh da firma
```


~ recomendo também trocar as configs de user e e-mail, essa config vai aparecer no seus commits:

Liste sua configuração do git:

```
git config --list
```

Como alterar nome de usuário e email global

```
git config --global user.name "Ana Deva"
git config --global user.email "ana@deva.com"
```

Como alterar nome de usuário e email para o <b>repositório atual</b>

```
git config  user.name "Ana Deva"
git config  user.email "ana@deva.com"
```

### concluindo:
Usando o config do ssh agent fica fácil de trocar as keys que queremos usar. Confira qual ssh-key está ativa para você antes de começar num repositório novo e bons commits =)