Sim, eu tenho uma configuração em que posso ssh
para o meu servidor usando autenticação de chave pública, com um fallback para autenticação de dois fatores com o Google Authenticator + senha quando minha chave privada não está disponível. Estas são as etapas que você pode usar para configurá-lo.
Instalando o Google Authenticator
Meu servidor está executando o Ubuntu Bionic Beaver (18.04.1). Você pode instalar o Google Authenticator usando apt
:
$ sudo apt install libpam-google-authenticator
Configurando o sshd
Abra /etc/pam.d/sshd
e adicione a seguinte linha na parte superior:
auth optional pam_google_authenticator.so
Abra /etc/ssh/sshd_config
e altere uma linha. A linha existente é
ChallengeResponseAuthentication no
e você deve mudar para
ChallengeResponseAuthentication yes
Configurando o Google Authenticator para sua conta
O próximo passo é ativar o Google Authenticator para sua conta. Você faz isso executando simplesmente:
$ google-authenticator
Certifique-se de executar isso como o usuário que fará conexões ssh, não como root. Anote sua nova chave secreta e seus códigos de emergência. O assistente fará várias perguntas para definir as configurações de segurança da sua conta.
Configurando seu aplicativo móvel
Eu uso o aplicativo Google Authenticator para iPhone. Este aplicativo possui um botão [+] que permite adicionar um novo token baseado em tempo usando a chave secreta que obtive do google-authenticator
comando no meu servidor. Foi trivial de configurar. Não posso ajudá-lo com aplicativos em nenhuma outra plataforma, mas imagino que o processo seja igualmente simples.
Puxando o gatilho
A última coisa que você precisa fazer é reiniciar sshd
.
$ sudo /etc/init.d/ssh restart
Nesse ponto, quando você tenta se conectar ao servidor quando sua chave privada está disponível, a autenticação simplesmente funciona. Quando sua chave privada não estiver disponível, você receberá um prompt para um código de verificação e a senha da sua conta.
Bingo, autenticação de dois fatores.