10 min de leitura · Guia técnico
Autenticação SSH por chave é um método de acesso seguro que substitui senhas por criptografia assimétrica no Ubuntu 22.04. Para configurar corretamente, siga estes passos:
- Gerar par de chaves SSH com ssh-keygen
- Copiar chave pública para o servidor remoto
- Configurar permissões corretas nos arquivos
- Testar conexão sem senha
- Desabilitar autenticação por senha no SSH
- Verificar logs de segurança
Pré-requisitos
- Servidor Ubuntu 22.04 LTS com acesso root ou sudo
- Cliente SSH instalado (OpenSSH 8.9 ou superior)
- Acesso inicial por senha ou console do provedor
- Conhecimento básico de terminal Linux
- Backup da configuração SSH atual
Gerando chaves SSH no Ubuntu 22.04
A geração de chaves SSH é o primeiro passo para implementar autenticação segura. O algoritmo RSA com 4096 bits oferece segurança robusta contra ataques modernos.
Execute o comando para gerar o par de chaves:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
O sistema solicitará informações durante o processo:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/usuario/.ssh/id_rsa
Your public key has been saved in /home/usuario/.ssh/id_rsa.pub
Atenção: Defina uma passphrase forte para proteger a chave privada. Deixar em branco reduz a segurança significativamente.
Verifique se as chaves foram criadas corretamente:
ls -la ~/.ssh/
Output esperado:
total 16
drwx------ 2 usuario usuario 4096 dez 15 10:30 .
drwxr-xr-x 3 usuario usuario 4096 dez 15 10:25 ..
-rw------- 1 usuario usuario 3243 dez 15 10:30 id_rsa
-rw-r--r-- 1 usuario usuario 736 dez 15 10:30 id_rsa.pub
Copiando chave pública para o servidor
A transferência da chave pública pode ser feita através do comando ssh-copy-id ou manualmente. O método automatizado é mais seguro e eficiente.
Use ssh-copy-id para copiar automaticamente:
ssh-copy-id usuario@ip-do-servidor
Se ssh-copy-id não estiver disponível, copie manualmente:
cat ~/.ssh/id_rsa.pub | ssh usuario@ip-do-servidor "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Alternativamente, copie o conteúdo da chave pública:
cat ~/.ssh/id_rsa.pub
No servidor remoto, adicione ao arquivo authorized_keys:
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ..." >> ~/.ssh/authorized_keys
Verifique se a chave foi adicionada corretamente:
cat ~/.ssh/authorized_keys
Configurando múltiplas chaves
Para gerenciar várias chaves SSH, cada uma deve ocupar uma linha separada no arquivo authorized_keys. Adicione comentários para identificação:
# Chave do laptop pessoal
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ... usuario@laptop
# Chave do servidor de backup
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ... backup@servidor
Configurando permissões de segurança
As permissões corretas dos arquivos SSH são fundamentais para o funcionamento seguro. O OpenSSH rejeita conexões se as permissões estiverem incorretas.
Configure as permissões do diretório .ssh:
chmod 700 ~/.ssh
Defina permissões do arquivo authorized_keys:
chmod 600 ~/.ssh/authorized_keys
Configure permissões da chave privada:
chmod 600 ~/.ssh/id_rsa
Verifique as permissões configuradas:
ls -la ~/.ssh/
Output esperado com permissões corretas:
drwx------ 2 usuario usuario 4096 dez 15 10:30 .ssh
-rw------- 1 usuario usuario 736 dez 15 10:30 authorized_keys
-rw------- 1 usuario usuario 3243 dez 15 10:30 id_rsa
-rw-r--r-- 1 usuario usuario 736 dez 15 10:30 id_rsa.pub
Verificando propriedade dos arquivos
Confirme se o usuário é proprietário dos arquivos SSH:
sudo chown -R $USER:$USER ~/.ssh
Para verificar a propriedade:
stat ~/.ssh/authorized_keys
Testando autenticação por chave SSH
O teste de conectividade SSH deve ser realizado antes de desabilitar a autenticação por senha. Mantenha uma sessão ativa como backup durante os testes.
Teste a conexão SSH com modo verbose:
ssh -v usuario@ip-do-servidor
Procure por estas linhas no output de debug:
debug1: Offering public key: /home/usuario/.ssh/id_rsa RSA SHA256:...
debug1: Server accepts key: pkalg rsa-sha2-512 blen 279
debug1: Authentication succeeded (publickey)
Se a autenticação falhar, use debug mais detalhado:
ssh -vvv usuario@ip-do-servidor
Teste com especificação explícita da chave:
ssh -i ~/.ssh/id_rsa usuario@ip-do-servidor
Verificando logs do servidor
No servidor, monitore os logs de autenticação:
sudo tail -f /var/log/auth.log
Procure por mensagens de sucesso:
sshd[1234]: Accepted publickey for usuario from 192.168.1.100 port 12345 ssh2: RSA SHA256:...
Configurando servidor SSH para chaves
A configuração do daemon SSH deve ser ajustada para priorizar autenticação por chave e aumentar a segurança geral do sistema.
Edite o arquivo de configuração SSH:
sudo nano /etc/ssh/sshd_config
Configure as seguintes opções:
# Habilitar autenticação por chave pública
PubkeyAuthentication yes
# Especificar arquivo de chaves autorizadas
AuthorizedKeysFile .ssh/authorized_keys
# Desabilitar autenticação por senha (após testar)
PasswordAuthentication no
# Desabilitar autenticação por desafio-resposta
ChallengeResponseAuthentication no
# Desabilitar login root direto
PermitRootLogin no
# Limitar tentativas de autenticação
MaxAuthTries 3
Atenção: Teste completamente a autenticação por chave antes de definir PasswordAuthentication como no.
Valide a configuração SSH:
sudo sshd -t
Se não houver erros, reinicie o serviço:
sudo systemctl restart ssh
Verifique o status do serviço:
sudo systemctl status ssh
Configurações adicionais de segurança
Para aumentar ainda mais a segurança, configure estas opções no sshd_config:
# Alterar porta padrão
Port 2222
# Limitar usuários específicos
AllowUsers usuario1 usuario2
# Desabilitar encaminhamento X11
X11Forwarding no
# Timeout de conexão inativa
ClientAliveInterval 300
ClientAliveCountMax 2
Problemas comuns e como resolver
Erro: Permission denied (publickey)
Causa: Permissões incorretas nos arquivos SSH ou chave não encontrada no servidor.
Solução: Verifique permissões com chmod 700 ~/.ssh e chmod 600 ~/.ssh/authorized_keys. Confirme se a chave pública está corretamente copiada no arquivo authorized_keys.
Erro: Host key verification failed
Causa: Chave do host mudou ou conexão man-in-the-middle detectada.
Solução: Remova a entrada antiga com ssh-keygen -R ip-do-servidor e reconecte para aceitar a nova chave do host. Verifique se o IP/hostname está correto.
Erro: ssh-copy-id command not found
Causa: Comando ssh-copy-id não instalado no sistema cliente.
Solução: Instale com sudo apt install openssh-client ou copie manualmente a chave usando cat ~/.ssh/id_rsa.pub | ssh usuario@servidor "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys".
Conexão ainda solicita senha após configuração
Causa: Configuração SSH não aplicada ou PasswordAuthentication ainda habilitada.
Solução: Verifique se PubkeyAuthentication yes está no /etc/ssh/sshd_config e reinicie o serviço SSH. Use ssh -v para debug detalhado da autenticação.
Chave privada protegida por passphrase não funciona
Causa: SSH-agent não está executando ou chave não foi adicionada.
Solução: Inicie o ssh-agent com eval $(ssh-agent) e adicione a chave com ssh-add ~/.ssh/id_rsa. Configure o ssh-agent para iniciar automaticamente no login.
Perguntas frequentes sobre autenticação SSH por chave
Como gerar uma chave SSH no Ubuntu 22.04?
Use o comando ssh-keygen -t rsa -b 4096 -C '[email protected]' no terminal. O sistema criará um par de chaves (pública e privada) no diretório ~/.ssh/. A chave privada fica no arquivo id_rsa e a pública no id_rsa.pub.
Onde fica o arquivo authorized_keys no Ubuntu?
O arquivo authorized_keys fica em ~/.ssh/authorized_keys no diretório home do usuário. Este arquivo contém as chaves públicas autorizadas a fazer login SSH sem senha. As permissões devem ser 600 para o arquivo e 700 para o diretório ~/.ssh.
Como desabilitar login por senha no SSH?
Edite o arquivo /etc/ssh/sshd_config e altere PasswordAuthentication para no. Também configure PubkeyAuthentication yes e ChallengeResponseAuthentication no. Reinicie o serviço SSH com sudo systemctl restart ssh para aplicar as mudanças.
O que fazer se a autenticação por chave SSH não funcionar?
Verifique as permissões do diretório ~/.ssh (700) e do arquivo authorized_keys (600). Confirme se a chave pública está corretamente copiada no arquivo authorized_keys. Use ssh -v para debug detalhado e verifique os logs em /var/log/auth.log.
É seguro desabilitar completamente a autenticação por senha?
Sim, é mais seguro usar apenas chaves SSH, pois elimina ataques de força bruta contra senhas. Porém, mantenha sempre uma forma alternativa de acesso (console do provedor) caso perca a chave privada. Teste completamente antes de desabilitar senhas em produção.
Conclusão
- Configure sempre permissões corretas (700 para ~/.ssh, 600 para chaves) antes de testar conexões
- Mantenha backup das chaves privadas e uma forma alternativa de acesso ao servidor
- Monitore logs de autenticação regularmente para detectar tentativas de acesso não autorizadas
Leia também
- Checklist para configurar autenticação SSH por chave no Ubuntu 22.04
- Guia para configurar acesso SSH apenas para IPs específicos no Ubuntu 22.04
- Passo a passo para configurar autenticação por chave SSH no SFTP em VPS Linux e servidor dedicado
Precisa de ajuda com configuração SSH em seu VPS?
Nossa equipe técnica pode auxiliar na implementação segura de autenticação SSH por chave em servidores Ubuntu 22.04. Oferecemos suporte especializado para configurações avançadas de segurança.