~ / blog / segurança
16 set 2026segurança8 min de leitura

SSH seguro em produção: chaves, bastion e auditoria

Guia prático para trocar senhas por chaves, reduzir superfície do sshd e investigar acessos em servidores Linux.

LinuxSSHhardening

1. O objetivo de um SSH seguro

SSH é a porta de entrada administrativa de muitos servidores. A meta não é esconder a porta nem confiar em um único mecanismo, mas combinar identidade forte, menor privilégio, configuração previsível e observabilidade.

2. Chaves e transição segura

ssh-keygen -t ed25519 -C "admin@empresa"
ssh-copy-id deploy@IP_DO_SERVIDOR
ssh -o IdentitiesOnly=yes deploy@IP_DO_SERVIDOR

Mantenha a sessão atual aberta enquanto testa a nova chave. Só desative senha depois que uma segunda sessão funcionar.

ATENÇÃO Nunca teste uma mudança de SSH fechando sua única sessão administrativa. Tenha console do provedor ou acesso out-of-band.

3. Configuração do sshd

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers deploy
MaxAuthTries 3
LoginGraceTime 30
sudo sshd -t
sudo systemctl reload ssh

4. Investigação e rotina

journalctl -u ssh --since today
last -ai
sudo ss -lntp

Centralize logs quando houver mais de um servidor. Registre usuário, origem, motivo do acesso e janela de manutenção. Em ambientes maiores, um bastion reduz a quantidade de servidores expostos diretamente.

5. Checklist final

  • Chave Ed25519 com passphrase
  • Root sem login
  • Senha desabilitada após teste
  • AllowUsers ou grupo administrativo
  • Logs revisados
  • Plano de recuperação disponível

6. Troubleshooting

Se uma chave não funciona, confirme permissões de ~/.ssh, o usuário efetivo, o agente carregado e a saída detalhada de ssh -vv. Verifique também se o daemon carregou o arquivo de configuração esperado e se um include não está sobrescrevendo a regra.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

7. Comandos e diretivas explicados

ComandoO que faz
ssh-keygen -t ed25519 -C "admin@empresa"Gera um par de chaves. -t ed25519 escolhe o algoritmo e -C grava um comentário de identificação.
ssh-copy-id deploy@IP_DO_SERVIDORInstala sua chave pública no ~/.ssh/authorized_keys do servidor.
ssh -o IdentitiesOnly=yes deploy@IPUsa só a chave indicada, sem tentar todas as chaves do agente (evita bloqueio por excesso de tentativas).
sudo sshd -tTesta a sintaxe do sshd_config sem aplicar nada.
sudo systemctl reload sshRecarrega a configuração sem derrubar as sessões abertas.
journalctl -u ssh --since todayLê os logs do serviço SSH de hoje.
last -aiLista os últimos logins, com o endereço IP de origem.
sudo ss -lntpMostra as portas TCP em escuta e o processo de cada uma (-l escuta, -n números, -t TCP, -p processo).
chmod 700 ~/.sshSó o dono acessa a pasta.
chmod 600 ~/.ssh/authorized_keysSó o dono lê e escreve o arquivo.
Diretiva do sshd_configO que faz
PermitRootLogin noImpede login direto como root.
PasswordAuthentication noDesativa login por senha, deixando só chaves.
PubkeyAuthentication yesHabilita autenticação por chave pública.
AllowUsers deploySó o usuário deploy pode entrar por SSH.
MaxAuthTries 3Máximo de tentativas de autenticação por conexão.
LoginGraceTime 30Segundos para concluir o login antes de a conexão cair.

8. Exemplo: alterar o SSH sem se trancar para fora

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config
sudo sshd -t && sudo systemctl reload ssh
# em OUTRO terminal, antes de fechar o primeiro:
ssh -o IdentitiesOnly=yes deploy@IP_DO_SERVIDOR

O && garante que o reload só rode se o sshd -t não achar erros. A sessão antiga continua aberta como rede de segurança até o teste em outro terminal dar certo. Se algo falhar, restaure a cópia .bak.

9. Erros comuns e como resolver

SintomaCausa provávelSolução
Permission denied (publickey)Chave não instalada, permissões erradas, usuário incorreto ou bloqueio por AllowUsers.Rode ssh -vv, confira as permissões do ~/.ssh e a lista AllowUsers.
REMOTE HOST IDENTIFICATION HAS CHANGEDO servidor foi reinstalado, ou alguém está interceptando a conexão.Confirme a impressão digital por outro canal e, se for legítimo, use ssh-keygen -R host.
O sshd -t mostra erroErro de digitação em uma diretiva.Corrija a linha indicada e teste de novo antes do reload.
O reload falha dizendo que o serviço não existeO nome do serviço muda: ssh no Ubuntu e Debian, sshd em outras distribuições.Use o nome certo com systemctl status ssh ou sshd.

Quer aplicar isso ao seu contexto?

Se esse problema existe na sua operação, podemos analisar o cenário em um diagnóstico gratuito de 30 minutos.

solicitar diagnóstico gratuito →

Leia também