Visão geral
Este artigo explica como configurar o lado do cliente para autenticação SSH por chave pública, permitindo conexões seguras com servidores. Os procedimentos abordam tanto Windows quanto Linux.
Pré-requisitos
- O cliente SSH já está instalado (padrão no Windows 10+ e em todas as distribuições Linux modernas)
- O servidor SSH está configurado para aceitar autenticação por chave pública
- Existe um usuário válido no servidor
Tipos de chaves e algoritmos
Os principais tipos de chaves usados no SSH são RSA, ECDSA e Ed25519. A tabela abaixo compara suas características, desempenho e compatibilidade.
| Tipo de chave | Características | Uso recomendado | Compatibilidade |
|---|---|---|---|
| RSA | Amplamente usado; comprimento configurável | Sistemas legados ou de alta compatibilidade | Muito alta |
| ECDSA | Baseado em curva elíptica; mais rápido com chaves menores | Ambientes que priorizam desempenho | Média |
| Ed25519 | Novo padrão; rápido e altamente seguro | Ambientes modernos e de alta segurança | Alta (OpenSSH ≥ 6.5) |
Ed25519 é atualmente o padrão recomendado. RSA ainda é amplamente usado, especialmente em ambientes antigos ou compatíveis com FIPS. ECDSA é intermediário entre os dois.
Convenções de variáveis
Valores dependentes do ambiente são representados por variáveis. Substitua conforme sua configuração.
| Variável | Exemplo | Descrição |
|---|---|---|
<<USERNAME>> |
exampleuser |
Usuário local (cliente) |
<<SERVER>> |
192.168.1.10 |
Endereço do servidor ou IP |
<<USER>> |
ubuntu ou ec2-user |
Usuário do servidor |
<<EMAIL_ADDRESS>> |
user@example.com |
E-mail opcional para o comentário da chave |
Observação (Windows)
Todos os comandos do Windows neste artigo presumem o uso do PowerShell.
Se usar o Prompt de Comando (cmd.exe), substitua$env:USERPROFILEpor%USERPROFILE%.
Cliente Windows
Etapa 1: Gerar o par de chaves
Abra o PowerShell como administrador e execute:
ssh-keygen -t ed25519 -C "<<EMAIL_ADDRESS>>"
Saída esperada:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/C:/Users/<<USERNAME>>/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Your identification has been saved in /C:/Users/<<USERNAME>>/.ssh/id_ed25519
Your public key has been saved in /C:/Users/<<USERNAME>>/.ssh/id_ed25519.pub
Chave pública:
$env:USERPROFILE\.ssh\id_ed25519.pub
Chave privada:$env:USERPROFILE\.ssh\id_ed25519
Etapa 2: Copiar a chave pública para o servidor
cat $env:USERPROFILE\.ssh\id_ed25519.pub | ssh <<USER>>@<<SERVER>> "mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys"
Ou copie manualmente o conteúdo do .pub para ~/.ssh/authorized_keys no servidor.
Etapa 3: Testar conexão
ssh -i $env:USERPROFILE\.ssh\id_ed25519 <<USER>>@<<SERVER>>
Cliente Linux
Etapa 1: Gerar o par de chaves
ssh-keygen -t ed25519 -C "<<EMAIL_ADDRESS>>"
Chave pública:
~/.ssh/id_ed25519.pub
Chave privada:~/.ssh/id_ed25519
Etapa 2: Registrar a chave no servidor
ssh-copy-id -i ~/.ssh/id_ed25519.pub <<USER>>@<<SERVER>>
Ou copie manualmente o conteúdo da chave pública para ~/.ssh/authorized_keys.
Etapa 3: Testar conexão
ssh -i ~/.ssh/id_ed25519 <<USER>>@<<SERVER>>
Usando chaves com frase secreta
Se a chave tiver uma passphrase, use o agente SSH para evitar digitação repetida.
Etapa 1: Iniciar o agente SSH
Windows:
Set-Service -Name ssh-agent -StartupType Manual
Start-Service ssh-agent
Linux:
eval "$(ssh-agent -s)"
Início automático
Windows:
Set-Service -Name ssh-agent -StartupType Automatic
Linux:
Adicione ao ~/.bashrc:
eval "$(ssh-agent -s)" > /dev/null
Etapa 2: Registrar a chave
Windows:
ssh-add $env:USERPROFILE\.ssh\id_ed25519
Linux:
ssh-add ~/.ssh/id_ed25519
Etapa 3: Confirmar registro
ssh-add -l
Arquivo de configuração do cliente (config)
Para simplificar conexões, crie ~/.ssh/config (ou C:\Users\<<USERNAME>>\.ssh\config no Windows).
Exemplo
Host myserver
HostName <<SERVER>>
User <<USER>>
IdentityFile ~/.ssh/id_ed25519
Port 22
Após isso, basta executar:
ssh myserver
Gerencie múltiplos servidores adicionando várias seções Host.
Verificação e depuração
Use modo detalhado para depurar autenticação:
ssh -vvv -i ~/.ssh/id_ed25519 <<USER>>@<<SERVER>>
Procure por Authentication succeeded (publickey) na saída.
Solução de problemas
Principais causas de falha:
- Autenticação por chave desativada no servidor
- Chave incorreta ou não registrada em
authorized_keys - Erro em usuário, permissão ou host
Conclusão
A autenticação SSH por chave pública oferece conexões seguras sem senha.
Com ssh-keygen e uma configuração correta de permissões, é possível implementar facilmente o método em Windows e Linux.
