Tutoriais

Como configurar 2FA no acesso SSH

Como configurar 2FA no acesso SSH

A autenticação por chave já é muito segura. Mas, se a chave privada for roubada de um notebook, o invasor terá acesso ao servidor. Com 2FA (autenticação em dois fatores), ele também precisaria do código temporário do seu celular.

Neste tutorial, vamos exigir chave SSH + código TOTP (Google Authenticator, Authy, Aegis, 1Password etc.).

Mantenha uma sessão SSH aberta durante toda a configuração e teste em outra janela antes de desconectar. Tenha acesso ao console do painel do provedor como plano B.

1. Instale o módulo PAM

# Debian/Ubuntu
sudo apt install libpam-google-authenticator -y

# AlmaLinux/Rocky (EPEL)
sudo dnf install epel-release -y
sudo dnf install google-authenticator qrencode -y

2. Gere o segredo para o seu usuário

Execute como o usuário que acessa o servidor (não como root):

google-authenticator

Respostas recomendadas:

  • Tokens baseados em tempo? y
  • Escaneie o QR Code no app autenticador;
  • Guarde os códigos de emergência em local seguro;
  • Atualizar o arquivo ~/.google_authenticator? y
  • Impedir reutilização do mesmo token? y
  • Aumentar a janela de tempo? n (a menos que tenha problemas de relógio);
  • Limitar tentativas? y

3. Configure o PAM do SSH

Edite /etc/pam.d/sshd e adicione ao final:

auth required pam_google_authenticator.so nullok

O nullok permite que usuários ainda sem 2FA configurado continuem entrando. Remova-o depois que todos configurarem.

Como vamos usar chave + código (e não senha + código), comente a linha que pede a senha do sistema no mesmo arquivo:

# @include common-auth

No AlmaLinux/Rocky, o equivalente é a linha auth substack password-auth. Comente-a apenas se não usar senha no SSH.

4. Configure o SSH

Crie /etc/ssh/sshd_config.d/20-2fa.conf:

KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

Em versões antigas do OpenSSH, a opção se chama ChallengeResponseAuthentication yes.

Garanta que não haja outro arquivo em sshd_config.d/ definindo KbdInteractiveAuthentication no antes do seu. Valide e reinicie:

sudo sshd -t
sudo systemctl restart ssh     # ou sshd

5. Teste em uma nova janela

ssh usuario@SEU_IP

O fluxo esperado:

  1. A chave SSH é verificada;
  2. É solicitado o Verification code;
  3. Você digita o código do app e entra.

Sincronização de horário

Códigos TOTP dependem do relógio. Garanta que o servidor está sincronizado:

timedatectl
sudo timedatectl set-ntp true

Dicas

  • Guarde os códigos de emergência fora do celular;
  • Para automações (deploys, backups), use um usuário separado, restrito a comandos específicos, em vez de desativar o 2FA;
  • Combine com Fail2ban, que também registra falhas de 2FA.

Conclusão

Chave SSH + 2FA cria uma barreira robusta mesmo que um dispositivo seja comprometido.Aplique essa proteção no seu VPS-NVME-BR da VittHost — e use o cupom SP-VITT20 para ganhar 20% de desconto na primeira fatura enquanto a promoção estiver ativa.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS