1.Instalar o módulo PAM do Google Authenticator:Ubuntu / Debian.
Atualize os repositórios do sistema e instale o pacote PAM necessário para integrar tokens temporários ao processo de login:
Bash
sudo apt update && sudo apt install libpam-google-authenticator -y
2.Gerar a chave 2FA e configurar o aplicativo:
Execute o utilitário no terminal para criar o segredo individual do seu usuário:
Bash
google-authenticator
Será exibido um QR Code grande no terminal. Abra o app (Google Authenticator, Authy ou 1Password) no celular e escaneie o código.
Responda às perguntas no terminal da seguinte forma:
- Make tokens time-based?
y - Update .google_authenticator file?
y - Disallow multiple uses of the same token?
y - Increase window size (rate-limiting)?
n - Enable rate-limiting?
y
Guarde os códigos de emergência (emergency scratch codes) exibidos no terminal em um local seguro. Eles são seu único acesso caso perca o celular.
3.Configurar o PAM para solicitar o token no SSH:
Edite o arquivo de configuração de autenticação do SSH:
Bash
sudo nano /etc/pam.d/sshd
Adicione a seguinte linha ao final do arquivo:
Plaintext
auth required pam_google_authenticator.so nullok
Nota: O parâmetro nullok permite que usuários que ainda não configuraram o 2FA continuem logando até realizarem a etapa inicial.
4.Ajustar o serviço OpenSSH:
Edite as configurações do servidor SSH para exigir o desafio interativo:
Bash
sudo nano /etc/ssh/sshd_config
Altere ou confirme as seguintes diretivas dentro do arquivo:
Plaintext
KbdInteractiveAuthentication yes
UsePAM yes
(Em versões mais antigas do OpenSSH, a opção pode se chamar ChallengeResponseAuthentication yes).
Se você usa Chaves SSH (pubkey) e deseja exigir Chave SSH + Código 2FA, adicione ao final do arquivo:
Plaintext
AuthenticationMethods publickey,keyboard-interactive
5.Reiniciar o SSH e validar a conexão:
Aplique as alterações reiniciando o daemon do SSH:
Bash
sudo systemctl restart ssh
Abra uma nova janela do terminal e tente se conectar ao servidor:
Bash
ssh usuario@ip_do_servidor
O servidor solicitará a verificação da chave/senha e, em seguida, o prompt exibirá Verification code:. Digite o código de 6 dígitos gerado no aplicativo do celular.