Não!
O problema básico é que .profile
só é lido depois que você está logado com sucesso! Nesse ponto, uma shell completa já está em execução, e a maioria das shells são feitas para atender o usuário, não , para impedi-las de fazer o que quiserem.
Vamos ver, por exemplo:
# echo -en "echo byebye; exit" > ~foo/.profile
# ssh foo@localhost
foo@localhost's password:
[...]
byebye
Connection to localhost closed.
Mas ainda posso dizer ao shell para fazer algo completamente diferente. (Como executar outro shell.)
# ssh foo@localhost -t "/bin/sh"
foo@localhost's password:
$ id
uid=1001(foo) gid=1001(foo) groups=1001(foo)
Você poderia alterar o shell do usuário para algo mais restrito, um programa projetado apenas para solicitar o OTP e depois iniciar o shell. Mas isso tornaria difícil fazer qualquer coisa que requer a execução de outro shell. Além disso, tudo o que é feito no domínio do usuário pode muito provavelmente ser alterado pelo usuário, e isso não é algo que se deseja com autenticação.
Por favor, faça a autenticação onde ele pertence, que é o PAM na maioria dos Linuxes.