[Tutorial Git] Acesso ao Github com SSH

Tags: ssh, github, rsa, womakerscode
Published: 2020-06-21 18:43:43

A conexão do nosso repositório local com o remoto (Github) se dá por meio de dois protocolos.

O primeiro é o **HTTPS** do inglês, *Hyper Text Transfer Protocol Secure*, em português, Protocolo de Transferência de HiperTexto Seguro. Nele seus **commits** são enviados através do seu **login** e **senha** do **Github**. Essa é a forma com mais segurança e recomendada, principalmente se você usa uma máquina compartilhada.

O segundo é o **SSH** do inglês *Secure Shell*, em português, Cápsula de Segurança. Nele não precisamos informar login e senha para cada acesso. Basta configurar as credenciais uma vez para realizar a conexão com o servidor remoto. É recomendada principalmente se apenas você tem acesso a máquina, pois as chaves são geradas no seu computador.

Primeiro, precisamos verificar se temos o pacote **openssh-client**.

```
$ ssh -V
```

Se estiver instalado, você verá o retorno da tela informando a versão. Geralmente ele já vem instalado por padrão nas distros Ubuntu/Mint/derivadas do Debian.

Caso não esteja, vamos instalá-lo com o comando:

```
$ sudo apt install openssh-client
```

- **$** indica que você deve usar o **usuário comum** para fazer essa operação.

- **sudo** serve para pedir permissões de administrador temporariamente.

- **apt** do inglês, *Advanced Package Tool*, em português, Ferramenta de Empacotamento Avançada; é a ferramenta que nos ajuda na instalação, atualização e desinstalação de programas, entre outras funções.

- **install** é o comando de instalar, indicando ao apt o que fazer.

- **openssh-client** é o nome do pacote que queremos instalar.

Agora iremos para o diretório **home** (caso você não esteja nele)

```
$ cd
```

- **cd**, do inglês, *change directory*, em português, mudar de diretório. Quando passado sem o nome de um diretório, esse comando nos leva a pasta **home**.

E então, podemos gerar a chave:

```
$ ssh-keygen -t rsa -C seu@email.com
```

- **ssh-keygen** é para chamar o gerador da chave.

- **-t** vai indicar o tipo de chave que queremos, no caso **rsa**, *Rivest–Shamir–Adleman*, sigla formada pelas iniciais dos sobrenomes dos criadores desse algoritmo de criptografia.

- **-C** para adicionar como comentário o seu endereço de **email do Github**.

A chave será gerada em:

```
/home/seu_usuario_linux/.ssh/id_rsa
```

Ele perguntará se você deseja gerar a chave nesse diretório. Aperte ENTER para confirmar.

Em seguida ele perguntará se você deseja criar uma senha para a chave e em seguida a confirmação da senha. Caso não deseje criar uma senha para a chave, basta pressionar ENTER nas duas vezes para deixar a senha vazia.

Agora vamos ver se as chaves estão no local:

```
$ ls .ssh
```

- **ls** fará com que o terminal exiba o nome dos arquivos e diretórios no local indicado.

Nosso retorno deve ser:

```
id_rsa id_rsa.pub
```

- **id_rsa** é sua chave privada.

- **id_rsa.pub** é sua chave pública.

Com o comando:

```
$ cat .ssh/id_rsa.pub
```

O terminal retornará nossa chave pública na tela.

- **cat**, do inglês *concatenate*, em português Concatenar, exibe o conteúdo do arquivo que indicamos.

Selecione toda a chave e copie.

Vá até a sua conta do **Github** e no canto superior direito procure por **Settings**. 

![settings](https://dev-to-uploads.s3.amazonaws.com/i/l6uvtkk6sy4gutxc2fiy.png)

Em seguida procure por **SSH and GPG keys**.

![SSH and GPG keys](https://dev-to-uploads.s3.amazonaws.com/i/v0ye0qtpvqgd0y8nlenb.png)

Clique em **New SSH key**.

![New SSH key](https://dev-to-uploads.s3.amazonaws.com/i/8knxcxbud0b78hk18lzf.png)

Em **Title** dê um nome que você possa posteriormente identificar onde foi usada essa chave. Exemplo: pc casa.

E em **Key** cole a chave que copiamos anteriormente e depois clique em **Add SSH key** para salvar a chave.

![add ssh key](https://dev-to-uploads.s3.amazonaws.com/i/rzztrwruyftdagnttk87.png)

Para saber se fizemos tudo certo, digite no terminal:

```
$ ssh -T git@github.com
```

O terminal perguntará se você deseja continuar a conexão. Responda _**yes**_ para continuar e receber o retorno de autenticação.

Agora você já pode fazer seus **commits, push e pull** com comodidade e **clonar** repositórios via SSH:

![clone ssh](https://dev-to-uploads.s3.amazonaws.com/i/7wmxq3qsqqmfhzy0vgd8.png)