O SSH é um protocolo de rede que permite que a conexão com determinados servidores por meio de uma comunicação criptografada, trazendo mais segurança para as transações de dados.
O Github permite que você crie chaves SSH para que você gerencie tudo de maneira remota, com segurança e sem precisar fornecer seu nome de usuário e token de acesso pessoal toda vez que quiser acessar.
O site do Github possui a documentação para essa configuração, que você pode conferir aqui.
Entretanto, com base nessa documentação e outras fontes de pesquisa, escrevi um tutorial passo-a-passo e adicionei algumas explicações para facilitar o entendimento.
Isso me ajudou a compreender melhor o que é cada coisa, ao invés de só copiar e colar comandos no terminal sem saber o que eles significam. E quem sabe esse resumo pode ser útil pra você também?
Terminal
Para executar os comandos deste tutorial, você já deve ter o git instalado na máquina e utilizar o terminal "Git Bash". É possível também executar no "WSL Bash" caso você esteja utilizando a distro do Linux no Windows.
Os exemplos contidos nas imagens a seguir são do WSL utilizado no Windows Terminal, com o tema oh-my-zsh. Se quiser saber como instalar, recomendo esse post que está muito bem explicado!
Chaves já existentes
O primeiro passo é executar um comando para saber se já existem chaves ssh na máquina. Por padrão o nome delas devem ser um desses: "id_rsa.pub", "id_ecdsa.pub" ou "id_ed25519.pub".
- Para listar as existentes, executar o comando:
ls -al ~/.ssh
Lista das chaves ed25519 já existentes.
Gerar uma nova chave
Caso não exista nenhum par de chaves existentes, precisamos gerar um novo par de chaves. Falamos "par de chaves" porque assim que gerarmos uma chave, serão criados dois arquivos, um público (.pub) e um privado. O conteúdo do arquivo público é o que futuramente colocaremos no github para fazer a conexão.
- Para criar uma chave ed25519, executar:
ssh-keygen -t ed25519 -C "your_email@example.com"
- Para criar uma chave rsa, executar:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Criação de um novo par de chaves rsa.
Adicionar chave privada no ssh-agent
O ssh-agent é um gerenciador de chaves ssh. Para que a conexão funcione, devemos adicionar a chave privada nesse gerenciador. Para isso vamos executar os códigos:
- Rodar o ssh-agent:
eval $(ssh-agent -s)
- Incluir a chave privada:
ssh-add ~/.ssh/id_ed25519
Copiar chave pública
Agora que já adicionamos a chave privada no ssh-agent, vamos copiar a chave pública que faz par com ela, para incluirmos no nosso github. No mesmo terminal executar:
-
No Windows:
clip < ~/.ssh/id_ed25519.pub
. (Automaticamente o conteúdo da sua chave pública será copiado para a área de transferência.) -
No Linux:
cat ~/.ssh/id_ed25519.pub
. (O conteúdo da chave pública aparecerá no terminal para ser selecionado e copiado.) -
MacOS:
pbcopy < ~/.ssh/id_ed25519.pub
Adicionar chave no Github
- Abra o Github e vá no ícone de perfil > Settings, no canto superior direito.
- Na barra lateral de configurações do usuário, clique em "SSH and GPG keys".
- Clique no botão "New SSH key"
- No campo "Título", adicione um rótulo descritivo para a nova chave. Por exemplo, se estiver usando seu computador pessoal, você pode chamar essa chave de "Computador pessoal".
- Cole a chave pública que está na área de transferência no campo "Chave".
- Clique em "Add SSH key" e pronto!
Testando a conexão SSH
- Executar o seguinte comando:
ssh -T git@github.com
- Aguardar as mensagens. Digitar "yes" para continuar.
- Verifique se a mensagem resultante contém seu nome de usuário e o sucesso da sua autenticação.
Se der algum erro de permissão, confira aqui.
Top comments (24)
Perfeito! Melhor artigo sobre o tema.
Nem sabia que existia um comando que copiava coisas pelo terminal :)
Só esqueceu de explicar melhor o ssh-agent 😅😅
Esse artigo sempre me salva, muito obrigado pelo artigo!
Nossa! Muito grato! Seu post me salvou desde toda essa mudança!
Muito Obrigado!
Esse arquivo sempre me salva quando restauro sistema!
Eu ainda o consulto tbm! :D
Nossa! Muito obrigada por este post! <3
é necessário criar uma chave ed25519 e outra rsa ou apenas uma basta? eu criei ambas mas não ficou nítido se era realmente necessário, obrigado pelo artigo!
Oi Marcos!
Obrigada pelo feedback.
Para configuração no github, apenas um tipo de par de chaves basta, sendo que a pública vc coloca lá e a privada fica na sua máquina. ;)
Muito bom! Obrigada por fazer isso de forma tão descomplicada.
Eu já estou com a chave SSH cadastrada mas toda vez que tento dar um push, ele diz pede usuario e senha ainda... como fazer para desabilitar isto?
Oi Renato, tudo bem?
Tenta fazer essa configuração global do seu username e email:
git-scm.com/book/pt-br/v2/Come%C3%...
Vc pode tentar também fazer essa verificação, se está usando o SSH URL ou o HTTPS URL do seu repositório: stackoverflow.com/a/8840623
Ou vc pode logar com seu usuário do github no vscode: code.visualstudio.com/docs/editor/...