Git e GitHub são ferramentas essenciais para todo desenvolvedor. Eles são amplamente utilizados em quase todos os tipos de projetos de desenvolvimento de software.
Existem outros serviços de hospedagem Git como Gitlab e Bitbucket, mas GitHub é a escolha mais popular para desenvolvedores. Você pode até editar seu perfil para parecer mais atraente para os recrutadores.
Você pode usar Git e GitHub para organizar seus projetos, colaborar com outros desenvolvedores, e – é claro – em Kinsta.
Mas como o Git e GitHub são ferramentas relacionadas, porém diferentes, você precisa atualizar seu fluxo de trabalho com cada uma delas constantemente.
Recomendamos o uso de chaves SSH para cada uma de suas máquinas. Então, neste tutorial, você aprenderá quais são elas, algumas de suas vantagens e como gerar e configurar chaves SSH GitHub.
Vamos começar!
O que são chaves SSH?
Simplificando, as chaves SSH são credenciais usadas para o protocolo SSH (Secure Shell) para permitir acesso seguro a computadores remotos pela internet. Normalmente, essa autenticação ocorre em um ambiente de linha de comando.
Este protocolo é baseado na arquitetura cliente-servidor, o que significa que você como usuário (ou “cliente”) precisa usar um software especial, chamado cliente SSH, para fazer login em um servidor remoto e executar comandos. Isto é basicamente o que você está fazendo ao se autenticar através de um terminal para o GitHub.
Mas o SSH não é usado apenas para GitHub. É amplamente utilizado por outras plataformas como Kinsta, Google Cloud e Amazon Web Services para criar um canal seguro para acessar seus serviços.
Agora, entrando em como as chaves SSH realmente funcionam, você precisa entender as diferenças entre as chaves públicas e privadas.
Chaves públicas vs privadas
Vamos começar com o básico.
O protocolo SSH usa uma técnica de criptografia chamada criptografia assimétrica. Este termo pode parecer complicado e estranho, mas nada poderia estar mais longe da verdade.
Basicamente, a criptografia assimétrica é um sistema que utiliza um par de chaves, ou seja, chaves públicas e privadas.
Como você pode adivinhar, a chave pública pode ser compartilhada com qualquer pessoa. Seu principal objetivo é criptografar dados, convertendo a mensagem em código secreto ou texto criptografado. Esta chave é normalmente enviada para outros sistemas – por exemplo, servidores – para criptografar os dados antes de enviá-los pela internet.
Por outro lado, a chave privada é aquela que você deve guardar para si mesmo. Ela é usada para decifrar os dados criptografados com sua chave pública. Sem ela, é impossível decodificar suas informações criptografadas.
Este método permite que você e o servidor mantenham um canal de comunicação seguro para transmitir as informações.
Veja o que acontece em segundo plano quando você se conecta a um servidor via SSH:
- O cliente envia a chave pública para o servidor.
- O servidor pede ao cliente para assinar uma mensagem aleatória criptografada com a chave pública usando a chave privada.
- O cliente assina a mensagem e encaminha o resultado para o servidor.
- Uma conexão segura é estabelecida entre o cliente e o servidor.
É importante manter suas chaves privadas seguras e compartilhá-las com qualquer pessoa sob nenhuma circunstância. Elas são literalmente a chave para todas as informações enviadas a você.
Usando as chaves SSH com o GitHub
Desde 13 de agosto de 2021, o Github não aceita mais autenticação de senha para acesso à linha de comando. Isto significa que agora você precisa autenticar através de um token de acesso pessoal ou usar uma chave SSH (um pouco mais conveniente).
Aqui está o que acontece quando você tenta autenticar com sua senha do GitHub sobre HTTP em um terminal:
Username for 'https://github.com': yourusername
Password for 'https://[email protected]':
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information.
fatal: Authentication failed for 'https://github.com/yourusername/repository.git/'
GitHub precisa da sua chave pública para autorizar você a editar qualquer um dos seus repos via SSH.
Vamos ver como você pode gerar chaves SSH localmente.
Como gerar chaves SSH localmente
Agora que você entende um pouco sobre o protocolo SSH e as diferenças entre chaves públicas e privadas, é hora de configurar o canal SSH seguro entre sua máquina e seu repositório GitHub.
Antes de seguirmos adiante, você já deve ter uma conta GitHub e um terminal/comando prompt com Git instalado em seu sistema. Se você estiver rodando Windows, certifique-se de ter instalado o Git bash, que tem todas as ferramentas que você precisará seguir junto com este tutorial incorporado.
O cliente OpenSSH é o mais popular software de código aberto usado para se conectar via SSH. Você não precisa se preocupar com seu sistema operacional porque ele é instalado por padrão no Linux, macOS e Windows 10.
Você precisa acionar um prompt de comando no Windows ou um terminal em sistemas baseados no Unix para gerar chaves SSH locais. Normalmente, você pode fazer isso procurando por “terminal”, “cmd”, ou “powerhell” no seu painel de aplicativo, depois clicando no ícone que aparece.
Depois de fazer isso, você deve ter uma janela semelhante à imagem a seguir.
Execute o seguinte comando para gerar um par de chaves SSH local:
ssh-keygen -t ed25519 -C "[email protected]"
É hora de lhe contar um segredo: ninguém pode realmente se lembrar deste comando! A maioria dos desenvolvedores tem que pesquisá-lo no Google toda vez porque:
- É um comando realmente longo, com números esquecíveis e aleatórios.
- Usamos raramente, por isso não vale a pena comprometê-lo com a memória na maior parte do tempo.
No entanto, é importante entender cada comando que introduzimos em nossos terminais, então vamos ver o que cada parte deste significa.
- ssh-keygen: A ferramenta de linha de comando usada para criar um novo par de chaves SSH. Você pode ver suas bandeiras com
ssh-keygen help
- –t ed25519: A bandeira
-t
é usada para indicar o algoritmo usado para criar a assinatura digital do par de chaves. Se o seu sistema suporta isso,ed25519
é o melhor algoritmo que você pode usar para criar pares de chaves SSH. - -C “email”: A bandeira
-C
é usada para fornecer um comentário personalizado no final da chave pública, que normalmente é o e-mail ou a identificação do criador do par de chaves.
Depois de digitar o comando em seu terminal, você terá que digitar o arquivo para o qual você gostaria de salvar as chaves. Por padrão, ele está localizado em seu diretório pessoal, em uma pasta oculta chamada “.ssh”, mas você pode mudá-lo para o que quiser.
Então você será solicitado a acrescentar uma senha para o seu par de chaves. Isto adiciona uma camada extra de segurança se, a qualquer momento, o seu dispositivo for comprometido. Não é obrigatório adicionar uma frase-chave, mas sempre é recomendado.
Este é o aspecto de todo o processo:
Como você pode ver, este comando gera dois arquivos no diretório que você selecionou (geralmente ~/.ssh): a chave pública com a extensão .pub
, e a privada sem extensão.
Nós lhe mostraremos como adicionar a chave pública à sua conta GitHub mais tarde.
Adicione a chave SSH ao ssh-agent
O programa ssh-agent é executado em segundo plano, segura suas chaves e senhas privadas com segurança e as mantém prontas para uso pelo ssh. É um grande utilitário que salva você de digitar sua senha toda vez que você quiser se conectar a um servidor.
Por causa disso, você vai adicionar sua nova chave privada a este agente. Veja como:
- Certifique-se de que o ssh-agent está rodando em segundo plano.
eval `ssh-agent` # Agent pid 334065
Se você receber uma mensagem semelhante a esta, se tudo estiver bem. Isso significa que o ssh-agente está rodando sob uma identificação de processo particular (PID).
- Adicione sua chave privada SSH (aquela sem extensão) ao ssh-agent.
ssh-add ~/.ssh/kinsta_keys
Substitua kinsta_keys pelo nome da sua chave SSH. Se esta é a primeira chave que você criou, ela deve ser nomeada “id_algorithm_use”, por exemplo, id_ed25519.
Adicionar chave SSH à conta GitHub
O passo final é adicionar sua chave pública à sua conta GitHub. Basta seguir estas instruções:
- Copie sua chave SSH pública para a sua área de transferência. Você pode abrir o arquivo onde ele está localizado com um editor de texto e copiá-lo, ou usar o terminal para mostrar seu conteúdo.
cat ~/.ssh/kinsta_keys.pub # ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJl3dIeudNqd0DPMRD6OIh65tjkxFNOtwGcWB2gCgPhk [email protected]
- Entre no GitHub e vá para a seção superior direita da página, clique na foto do seu perfil e selecione Configurações.
- Então, no perfil de suas configurações, clique nas teclas SSH e GPG.
- Clique no botão Nova chave SSH.
- Dê um título à sua nova chave SSH no GitHub – geralmente, o dispositivo do qual você usará essa chave. E então cole a chave na área Key.
- Adicione sua chave SSH.
Teste de conexão SSH com um repo push
É hora de testar tudo o que você já fez até agora. Você vai mudar, se comprometer e mover para um de seus repositórios existentes usando SSH para garantir que sua conexão esteja configurada corretamente.
Para nosso exemplo, vamos modificar o site HTML simples que criamos em nosso tutorial Git for Web Development.
Primeiro, precisaremos clonar o repositório em nossa máquina local. Podemos ir para a página de reporte no GitHub e copiar o endereço SSH que ele fornece.
Então, clone o repo usando um terminal:
git clone [email protected]:DaniDiazTech/HTML-site.git
Agora, vamos adicionar uma simples tag <h1>
no arquivo index.html:
...
<div class="container my-2">
<h1 class="text-center">A new title!<h1>
</div>
<div class="container my-3">
...
Não estamos tocando em nenhum JavaScript ou CSS para manter esta edição simples. Mas se você é habilidoso com JavaScript, você pode encontrar um lugar na Kinsta. Verifique as habilidades de codificação que você precisa para fazer parte da equipe Kinsta.
Depois de fazer isso, comprometa as mudanças:
git commit -am "Added a simple title"
E mova para dentro do GitHub como você normalmente faria.
git push
Se tudo correu bem, parabéns! Você acabou de estabelecer uma conexão SSH entre a sua máquina e o GitHub.
Gerencie múltiplas chaves SSH para diferentes contas GitHub
Se você tem várias contas GitHub – digamos uma para seus projetos pessoais e outra para o seu trabalho – é difícil usar o SSH para ambos. Você normalmente precisaria de máquinas separadas para autenticar as diferentes contas GitHub.
Mas isto pode ser resolvido facilmente configurando o arquivo de configuração do SSH.
Vamos entrar nisso.
- Crie outro par de chaves SSH, e adicione-o à sua outra conta GitHub. Tenha em mente o nome do arquivo ao qual você está atribuindo a nova chave.
ssh-keygen -t ed25519 -C "[email protected]"
- Crie o arquivo de configuração SSH. O arquivo de configuração diz ao programa ssh como ele deve se comportar. Por padrão, o arquivo de configuração pode não existir, então crie-o dentro da pasta .ssh/:
touch ~/.ssh/config
- Modifique o arquivo de configuração do SSH. Abra o arquivo de configuração e cole o código abaixo:
#Your day-to-day GitHub account Host github.com HostName github.com IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes # Work account Host github-work HostName github.com IdentityFile ~/.ssh/work_key_file IdentitiesOnly yes
Agora, toda vez que você precisa autenticar via SSH usando seu trabalho ou conta secundária, você afina um pouco o endereço SSH repo, de:
[email protected]:workaccount/project.git
…para:
git@github-work:workaccount/project.git
Resumo
Parabéns – você aprendeu a maior parte do conhecimento prático que você precisa para se conectar ao GitHub via SSH!
Este tutorial discutiu a necessidade do protocolo SSH, as diferenças entre chaves públicas e privadas, como gerar chaves, adicioná-las ao GitHub e até mesmo gerenciar múltiplas chaves SSH para diferentes contas GitHub. Tenha em mente que, a menos que você queira perder o acesso a tudo, sua chave privada precisa permanecer assim: privada.
Com este conhecimento, agora você está pronto para desenvolver um fluxo de trabalho sem falhas com Git e GitHub. Continue codificando!
Deixe um comentário