Gostaria de adicionar um nível de segurança para logins em um servidor SSH (Ubuntu), usando autenticação de dois fatores. Uma particularidade de como os usuários se conectam ao servidor SSH é que às vezes eles fazem isso de forma não interativa: o servidor SSH é configurado no cliente MySQL dos usuários para ser usado como bastião/proxy para acessar um banco de dados. Como consequência, estou procurando configurações 2FA que não exijam que o usuário digite nada em um terminal.
Uma solução existente que parece promissora em teoria é o prompt do telefone do Google, que permite ao usuário validar a conexão. Cada usuário SSH seria associado a um número de telefone e esse número de telefone receberia um prompt para validação em cada conexão.
Uma desvantagem óbvia dessa ideia é que parece que exigiria o desenvolvimento de um aplicativo de telefone, o que a tornaria muito complicada e cara. Existem outras técnicas que eu poderia usar para permitir que os usuários validem logins SSH não interativos?
Responder1
Você pode usar um SSH-CA para emitir certificados de usuário OpenSSH temporários de curto prazo, válidos apenas por algumas horas. O usuário deve solicitar o certificado autenticando-se com qualquer solução MFA de sua preferência. O certificado SSH e a chave privada serão carregados no agente de chave SSH e poderão ser usados até que o certificado do usuário expire.
Existem várias implementações de SSH-CA por aí com meuEKCAsendo um deles. YMMV.