Faça seu push automaticamente com SSH no Github (Linux)

Faça seu push automaticamente com SSH no Github (Linux)

Fazer a mesma coisa é chato

Se você já está usando há um bom tempo o Git e o Github no Linux você irá concordar comigo que tem uma coisa que é muito chata nisso tudo que é ter que colocar seu usuário e senha à todo momento a cada commit e push que se dá no repositório.

Mas você sabia que é possível fazer isso automaticamente se v a máquina que você está usando é a sua pessoal ou é sempre a mesma?

O Github tem um esquema de confirmação por chave SSH, que certifica que você é você mesmo ao mandar alguma coisa para o servidor deles. Curioso para saber como? Vamos lá..

Verifique se já existe alguma coisa:

Primeiro precisamos ter certeza que alguma chama não foi gerada recentemente para isso basta acessar a pasta:

ls -al ~/.ssh

Caso ele retorne algum arquivo .pub significa que alguma vez neste computador alguém gerou uma senha. Nesse momento você tem uma escolha, que é partir para o ultimo passo de configuração no github, ou apagar a pasta ~/.ssh e tentar novamente.

Criar a ssh-key no sistema

Para gerar uma ssh-key com o seu email correspondente ao Gihub basta usar:

ssh-keygen -t ed25519 -C "seu_email@exemplo.com"

Você deve tomar muito cuidado pois o email utilizado deve ser igual o email usado no seu github. Se não for feito dessa forma ele não irá funcionar.

Ele irá pedir para criar um novo arquivo no seu diretório, dessa forma:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/nicolas/.ssh/id_ed25519):

Normalmente, caso necessário, você pode configurar mais de um arquivo, e pra esse sentido basta escolher o nome. Porém não recomendo alterar se caso é sua primeira vez utilizando o SSH. Para não escolher basta dar enter.

Logo após ele irá pedir uma frase para reforço da chave, se você quiser pode escrever alguma frase ou ruído para que a criptografia fique mais forte. Caso contrário, basta dar enter para que a frase seja vazia.

Created directory '/home/nicolas/.ssh'.
Enter passphrase (empty for no passphrase):

Depois irá gerar o restante dessa forma:

Your public key has been saved in /home/nicolas/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx nicolasm15@hotmail.com
The key's randomart image is:
+--[ED25519 256]--+
|                 |
|                 |
|       .         |
|    . + .   .    |
|     = O..+ o .  |
|    +.+ @.B . E  |
|   . oo+ &.=     |
|    .+ ./.oo.    |
|    . =X**=o.    |
+----[SHA256]-----+

Caso já exista ele irá retornar algo assim:

/home/nicolas/.ssh/id_ed25519 already exists.
Overwrite (y/n)?

Basta seguir o comando ou apagar a pasta e tentar novamente.

Adicionar ao ssh-agent do Sistema Operacional

Nesse ponto o ssh-key já deve existir e portanto você pode ativar o agent através de:

 eval "$(ssh-agent -s)"

Importante frizar que o fish não executa comandos com "$()" e devido uma decisão deles não é possível executar comandos de substituição no terminal. Dessa forma, talvez seja necessário entrar no BASH.

O próximo comando é o responsável por adicionar no diretório:

ssh-add ~/.ssh/id_ed25519

Adicionando a chave no github

Nesse ponto devemos adicionar a chave no nosso Github, para isso devemos copiar seu conteúdo e colar no site.

Existe um pacote que ajuda a copiar o conteúdo da chave sem precisar alterar ou corromper pela falta de algum caractere que é: Ubuntu e Debian

sudo apt-get install xclip

Arch Linux e Manjaro

sudo pacman -S xclip

Para executar o comando basta:

xclip -selection clipboard < ~/.ssh/id_ed25519.pub

Depois de copiado você pode abrir seu Github e acessar suas configurações:

image.png

Ir em SSH and GPD keys:

image.png

Crie uma nova chave New SSH Key: image.png

Cole o conteúdo do comando xclip: image.png

Ficando dessa forma: image.png

Mantenha essa aba aberta porque utilizaremos no próximo passo.

Teste a conexão com Github

Nesse momento ainda não está 100% configurado, você precisa fazer sua primeira interação com o Github com a sua chave. Para isso basta:

ssh -T git@github.com

Você poderá receber um aviso como este:

The authenticity of host 'github.com (140.82.113.4)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Nesse momento ele errou a sua chave. Isso é normal, copie a chave SHA256:xxx no qual está em seu Github, cole no terminal e pressine enter. Ele irá dizer:

Please type 'yes', 'no' or the fingerprint:

Basta escrever yes.

Nesse momento se ele retornou a seguinte mensagem com o seu nome, você obteve sucesso.

Warning: Permanently added 'github.com,140.82.113.4' (RSA) to the list of known hosts.
Hi nicolas-oliveira! You've successfully authenticated, but GitHub does not provide shell access.

Caso ainda assim ele retornou um erro quem sabe vale a pena testar, consultando esses erros:

A parte que interessa

Se você utilizava HTTPS para enviar seus pushs nos seus repositórios talvez seja necessário remover e adicionar novamente sua origem remota do repo. Dessa forma:

Para remover a origem HTTPS

git remote rm origin

Para adicionar uma nova origem

git add remote origin <ssh-origin>

Para encontrar a origem SSH de cada repositório, basta entrar no repositório e clicar em Code.

image.png

Pronto! Nesse momento tudo está indo automaticamente para o servidor! 😀

Ficou com dúvidas? Manda ai nos comentários...