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.
Como instalar 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 no topo:
auth optional pam_google_authenticator.so
Abra /etc/ssh/sshd_config
e mude uma linha. A linha existente é
ChallengeResponseAuthentication no
e você deve alterá-lo para
ChallengeResponseAuthentication yes
Configurando o Google Authenticator para sua conta
O próximo passo é ativar o Google Authenticator para sua conta. Você faz isso simplesmente executando:
$ google-authenticator
Certifique-se de executar isto como o usuário que fará conexões ssh, não 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 para dispositivos móveis
Eu uso o aplicativo Google Authenticator para iPhone. Este aplicativo tem um botão [+] que me permite adicionar um novo token baseado em tempo usando a chave secreta que obtive do comando google-authenticator
em meu servidor. Foi trivial para configurar. Não posso ajudá-lo com aplicativos em qualquer 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
Neste 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á uma solicitação de um código de verificação e, em seguida, a senha da sua conta.