O SSH (Secure Shell) permite acessar servidores e conversar com o GitHub por uma conexão criptografada, sem digitar usuário e senha a cada git push. Neste guia, você cria uma chave SSH no Windows, cadastra no GitHub e testa a conexão. Se ainda não instalou e configurou o Git, comece pelo artigo anterior.
Como funciona, em uma frase
Você gera um par de chaves: a privada, que fica só no seu computador, e a pública, que você entrega ao GitHub. Quem tem a pública consegue conferir que você tem a privada, sem que ela jamais saia da sua máquina.
Atenção: a chave que vai para o GitHub é sempre a de extensão
.pub. O arquivo sem extensão é a chave privada: nunca copie, envie ou publique o conteúdo dele.
1. Gere a chave
Abra o Git Bash (ou o PowerShell) e digite:
ssh-keygen -t ed25519 -C "seuemail@exemplo.com"
-t ed25519escolhe o algoritmo atualmente recomendado: as chaves são menores e mais rápidas que as RSA, que eram o padrão em guias antigos.-Cé só um comentário para você reconhecer a chave depois. O e-mail é uma boa opção.
O comando faz duas perguntas:
- Onde salvar: pressione Enter para aceitar o padrão (
C:\Users\SeuUsuário\.ssh\id_ed25519). - Passphrase: é uma senha que protege a chave. Recomendo definir uma: se alguém copiar o arquivo, ele não serve sem a senha. Para não digitá-la toda hora, use o passo seguinte.
Ao final, a pasta .ssh terá dois arquivos: id_ed25519 (privada) e id_ed25519.pub (pública).
Se o seu guia ou sistema ainda exigir RSA, use
ssh-keygen -t rsa -b 4096 -C "seuemail@exemplo.com". Os arquivos terão o nomeid_rsaeid_rsa.pub.
2. Carregue a chave no ssh-agent
O ssh-agent guarda a chave desbloqueada na memória, e assim você digita a passphrase uma só vez por sessão. No Windows, ele vem desativado. Abra o PowerShell como administrador e execute:
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
Depois, em um terminal comum, adicione a chave:
ssh-add $env:USERPROFILE\.ssh\id_ed25519
3. Copie a chave pública
Mostre o conteúdo do arquivo .pub e copie tudo, da primeira à última letra:
cat ~/.ssh/id_ed25519.pub
No PowerShell, o comando equivalente é Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub. Ele começa com ssh-ed25519 e termina com o seu comentário.
4. Cadastre a chave no GitHub
- No GitHub, clique na sua foto, no canto superior direito, e escolha Settings.
- No menu lateral, abra SSH and GPG keys.
- Clique em New SSH key.
- Em Title, dê um nome que identifique o computador (por exemplo, "Notebook pessoal").
- Em Key type, mantenha Authentication Key, e cole a chave pública em Key.
- Clique em Add SSH key. O GitHub pode pedir a sua senha para confirmar.
5. Teste a conexão
ssh -T git@github.com
Na primeira vez, o SSH pergunta se você confia no servidor e mostra uma impressão digital (fingerprint). Confira se ela bate com a lista oficial do GitHub e responda yes.
Se tudo estiver certo, você verá algo como:
Hi seuusuario! You've successfully authenticated, but GitHub does not provide shell access.
Essa mensagem é o sucesso esperado: o GitHub reconheceu a sua chave, e só não oferece um terminal.
6. Baixe um repositório
No GitHub, abra um repositório seu, clique em Code, escolha a aba SSH e copie o endereço, que tem este formato:
git@github.com:seuusuario/nome-do-repositorio.git
Na pasta onde ficam os seus projetos, abra o Git Bash e execute:
git clone git@github.com:seuusuario/nome-do-repositorio.git
Se o repositório for baixado sem pedir senha de conta, a configuração está funcionando.
Se algo der errado
Permission denied (publickey): o GitHub não reconheceu a chave. Confira se você colou o conteúdo do arquivo.pub(e não o da privada), se ossh-agentestá rodando e se a chave foi adicionada comssh-add -l.ssh-adddiz que o agente não está em execução: repita o passo 2 em um PowerShell como administrador.- Mais de uma chave: se você tem chaves para outros serviços, use um arquivo
~/.ssh/configpara indicar qual usar em cada host.
Boas práticas
- Use uma chave por computador, para poder revogar só a de um aparelho perdido.
- Defina uma passphrase e mantenha o ssh-agent.
- Nunca versione, envie ou cole a chave privada em lugar nenhum.
- Revise de tempos em tempos as chaves em Settings → SSH and GPG keys e remova as que não usa mais.