Desde que o daemon sshd esteja configurado para usar o PAM (cuidado com o uso de chaves públicas, o que pode mudar como isso funciona!), isso pode ser feito com um plugin PAM (personalizado?).
Isso provavelmente quebraria qualquer ferramenta de automação (ssh / scp / sftp em scripts, Ansible, etc) que você possua, portanto, você deve ter muita cautela ao aplicar esse plug-in. 2FA provavelmente estaria no mesmo barco aqui, pelo menos até certo ponto (por exemplo, um token RSA só perguntaria se o usuário receber um token, acredito).
No entanto, do ponto de vista de um datacenter empresarial, eu sugeriria que talvez fosse melhor revisitar por que você faz isso, já que provavelmente também gostaria de registrar o que o usuário está fazendo (pelo menos para algumas classes de usuários) e ter algum mecanismo útil para reportar / auditar isso.
E provavelmente você gostaria de fazer coisas semelhantes para coisas como consoles da Web e sessões do Windows RDP.
E você provavelmente deseja fazer algo com credenciais, controlando o acesso e roteando as credenciais rotineiramente. Isso é algo que surge rotineiramente nas auditorias.
Estes são problemas resolvidos no espaço de segurança comercial. Um fornecedor de que ouvi falar que faz tudo isso em um (?) Pacote é o CuberARK, e eu sei que há pelo menos outro jogador importante. Eu não posso garantir pessoalmente, embora eu não tenha usado.