quarta-feira, setembro 18, 2024
spot_img
InícioRamos da InformáticaDevOps e DevSecOpsGit e Github - Como gerar chave SSH no Git?

Git e Github – Como gerar chave SSH no Git?

Este é um tutorial sobre como gerar e utilizar chaves SSH no Git para trabalhar em seus projetos.

Existem duas formas de se autenticar no GitHub quando você faz um push: via HTTP e via SSH.

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.

VAI GOSTAR:

Coleção de E-Books sobre Git e GitHub grátis

10 Comandos Git que todo Dev precisa saber

 

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.

Via HTTP você fornece suas credenciais, da mesma forma que as forneceria ao fazer login no site do GitHub; e via SSH, na qual você usa um par de chaves – sendo uma pública e uma privada – para se autenticar sem usuário e senha.

O SSH, ou shell seguro, é um protocolo criptografado usado para administrar e se comunicar com servidores. Ao trabalhar com um servidor Linux, existem boas chances de você gastar a maior parte do seu tempo em uma sessão de terminal conectada ao seu servidor através do SSH.

Embora existam outras maneiras diferentes de fazer login em um servidor SSH, neste guia, iremos focar na configuração de chaves SSH. As chaves SSH oferecem uma maneira fácil e extremamente segura de fazer login no seu servidor. Por esse motivo, este é o método que recomendamos para todos os usuários.

Como as chaves SSH funcionam?

Um servidor SSH pode autenticar clientes usando uma variedade de métodos diferentes. O mais básico deles é a autenticação por senha, que embora fácil de usar, mas não é o mais seguro.

Apesar de as senhas serem enviadas ao servidor de maneira segura, elas geralmente não são complexas ou longas o suficiente para resistirem a invasores persistentes. O poder de processamento moderno combinado com scripts automatizados torna possível forçar a entrada de maneira bruta em uma conta protegida por senha. Embora existam outros métodos para adicionar segurança adicional (fail2ban, etc), as chaves SSH são comprovadamente uma alternativa confiável e segura.

Os pares de chaves SSH são duas chaves criptografadas e seguras que podem ser usadas para autenticar um cliente em um servidor SSH. Cada par de chaves consiste em uma chave pública e uma chave privada.

A chave privada é mantida pelo cliente e deve ser mantida em absoluto sigilo. Qualquer comprometimento da chave privada permitirá que o invasor faça login em servidores que estejam configurados com a chave pública associada sem autenticação adicional. Como uma forma de precaução adicional, a chave pode ser criptografada em disco com uma frase secreta.

A chave pública associada pode ser compartilhada livremente sem consequências negativas. A chave pública pode ser usada para criptografar mensagens que apenas a chave privada pode descriptografar. Essa propriedade é usada como uma maneira de autenticar usando o par de chaves.

A chave pública é enviada a um servidor remoto de sua preferência para que você possa fazer login via SSH. A chave é adicionada a um arquivo especial dentro da conta de usuário em que você estará fazendo login chamado ~/.ssh/authorized_keys.

Autentificar no git usando SSH

Quando um cliente tenta autenticar-se usando chaves SSH, o servidor testa o cliente para verificar se ele tem posse da chave privada. Se o cliente puder provar que possui a chave privada, a sessão do shell é gerada ou o comando solicitado é executado.

Primeiro, deve-se gerar um novo par de chaves usando o comando ssh-keygen:

ssh-keygen -t rsa -b 4096 -C "seu-email@seu-servidor.com"

O comando irá perguntar em qual arquivo você deseja salvar sua chave. Se você não tem nenhuma chave configurada, não tem problema usar o nome padrão (id_rsa). Em seguida, ele perguntará se você deseja usar uma senha que será perguntada toda vez que você fizer uma autenticação baseada nas suas chaves. Recomendo configurar uma senha se você compartilha seu computador com outras pessoas.

Enter passphrase (empty for no passphrase): [digite sua senha]
Enter same passphrase again: [digite sua senha novamente]

Finalmente, sua chave será salva na pasta ~/.ssh:

Your identification has been saved in /Users/raffa-ferreira/.ssh/id_rsa.
Your public key has been saved in /Users/raffa-ferreira/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db seu-email@seu-servidor.com

Feito isso, vamos colocar as chaves no GitHub. Logue em sua conta, vá para as configurações de Chaves SSH e clique no botão Add SSH key. Lá você terá um campo de título, opcional, e o campo da chave, no qual você deverá colar a chave pública (e não a privada) que acabamos de gerar. Para facilitar o processo, copie a chave pública para a área de transferência usando o comando pbcopy:

pbcopy < ~/.ssh/id_rsa.pub

Depois da sua chave ter sido configurada no GitHub, já é possível dar um git push normalmente.

LEIA TAMBÉM

O que é Git? um Sistema de Controle de Versão

Apenas poder acessar o código dos outros colaboradores não é suficiente. Precisamos manter o histórico dos nossos arquivos. Mais: das nossas modificações, pois muitas vezes mudamos arquivos em grupo, num movimento único (um commit). Dessa forma, podemos voltar atrás e recuperar o estado do sistema como ele era ontem, ou no ano passado, e comparar as mudanças, para encontrar bug, para estudar otimizações.

Todos nossos arquivos, assim como seus históricos, ficam em um repositório e existiam vários sistemas que gerenciavam repositórios assim, como CVS e SVN. O Git é uma alternativa que tem um funcionamento mais interessante ainda: ele é distribuído e todo mundo tem uma cópia inteira do repositório, não apenas o “servidor principal”. Isso trás grandes vantagens que você não precisa aprender nesse exato momento.

O Git é um sistema de controle de versão distribuído e amplamente adotado. O Git nasceu e foi tomando espaço dos outros sistemas de controle. Seu criador principal é o mesmo que o do Linux: Linus Torvalds, e ganhou o coração das pessoas que trabalham com open source.

O que é GitHub?

O Github tem sim muita relação com o Git. GitHub é uma plataforma para gerenciar seu código e criar um ambiente de colaboração entre devs, utilizando o Git como sistema de controle. Ele vai facilitar o uso do Git, escondendo alguns detalhes mais complicados de setup. É lá que você provavelmente vai ter seu repositório e usar no dia a dia.

O sistema web que ele possui permite que você altere arquivos lá mesmo, apesar de não ser muito aconselhado, pois você não terá um editor, um ambiente de desenvolvimento e testes. Para se comunicar com o github e mexer nos arquivos do seu reposítorio, você pode usar a linha de comando, usando o comando do git e suas diretivas de commit, pull e push. Parece assustador? Há uma alternativa: usar um aplicativo desktop mais intuitivo, o GitHub Desktop, veja a seguir.

Github Desktop: usar Git sem precisar configurar e manter um servidor

O Github Desktop é uma casca para o comando do git, que esconde alguns termos que podem ser assustadores para quem está começando. Eu indico fortemente seu uso como primeiro passo, pois o sistema inteiro dá uma cara de “sincronizador de código”. Facilita a visualizações, o envio e recebimento das modificações e os famosos conflitos de merge, que você não precisa se preocupar nesse primeiro instante.

Dúvidas sobre Git e GitHub?

Então poste nos comentários que respondemos!

Perguntas Frequentes:

Como usar o Git?

Você vai usar o Git para guardar o versionamento de todo seu sistema, de maneira segura e distribuída. Deve sempre fazer pequenos commits e ‘pushar’ suas modificações em grupos que fazem sentido. Do outro lado, deve fazer os ‘pulls’ para sincronizar com as modificações de todo time. O Git é uma ferramenta, você vai precisar de um servidor principal (mesmo ele sendo distribuído) para facilitar seu trabalho. É aí que entra o Github como sendo uma das opções já prontas.

O que é um git commit?

Cada commit registra um momento de vida do seu projeto. É uma foto (snapshot) daquele instante dos arquivos. Com isso você consegue se referenciar àquele momento do projeto, podendo voltar a ele, analisá-lo, ver as diferenças com um outro momento. Não se esqueça que os commits são feitos no seu repositório local e você precisa ‘pushar’ (empurrá-los) de volta para a origem, para que outras pessoas tenham acesso a essas fotos e atualizem-se no tempo de vida.

Qual a diferença de GitHub e Git?

Git é a ferramenta que Linus criou. Se você quer utilizá-la, pode fazer tudo sozinho e hospedar um repositório principal para ter seu software versionado. Isso pode ser uma tarefa complicada. Algumas empresas, como Github, Bitbucket e Gitlab, já oferecem esse serviço, controlam o acesso dos usuários e oferecem ferramentas extras de gerenciamento de projetos. O Github é uma opção para que você use o Git de maneira mais simples, mas não é obrigatório, apesar de extremamente usado.

Quais são as alternativas ao Github?

O Bitbucket e o Gitlab são as duas principais alternativas de serviço Git além do Github.

Ramos da Informática
Ramos da Informáticahttps://ramosdainformatica.com.br
Ramos da Informática é um hub de comunidade sobre linguagens de programação, banco de dados, DevOps, Internet das Coisas, tecnologia da indústria 4.0, Cyber Segurança e Startups.
ARTIGOS RELACIONADOS
- Advertisment -spot_img

MAIS LIDOS

Sua assinatura não pôde ser validada.
Você fez sua assinatura com sucesso.

E-Zine Ramos da Informática

Assine o E-Zine e tenha Conteúdo Exclusivo, Concursos para assinantes, descontos exclusivos e uma área de conteúdos exclusivos só do E-zine.