Com relação a uma solução de uma linha, não há nenhuma. Uma lógica complexa como essa requer manipulação da pilha do PAM. Dito isso, eu não acho que essa regra do PAM teria que ser muito complexa ... então isso realmente depende se você tem uma estratégia de gerenciamento de configuração para gerenciar essa configuração do PAM para você, e não colocá-la no SE. Se você fizer isso, isso pode não ser muito doloroso.
É um fato frequentemente negligenciado, mas a autenticação ssh baseada em chave ignora a pilha auth
do PAM. Se você tiver uma maneira de identificar as pessoas que devem fazer login apenas via chaves SSH, poderá instalar um gancho na pilha auth
que falhar na tentativa de autenticação se essa característica for vista. Sugiro criar um grupo para essa finalidade, pois ele é melhor do que os nomes de usuário com código de hardware em uma configuração do PAM.
Colocando tudo isso junto, e assumindo que 65536
é o gid do grupo em questão:
-
groupadd -g 65536 sshonly
- Adicione a seguinte linha ao topo da sua pilha
auth
:
auth required pam_succeed_if.so gid ne 65536
-
useradd -u $SOMEUID -g $SOMEGID somename
-
usermod -a -G sshonly somename