Defina o campo de criptografia como *
ou !!
em /etc/shadow
por exemplo
# adduser tst
# passwd -l tst
Locking password for user tst.
passwd: Success
# grep tst /etc/passwd
tst:x:1000:1000::/home/tst:/bin/bash
# grep tst /etc/shadow
tst:!!:17030:0:99999:7:::
Neste ponto, o usuário não pode fazer o login porque não há senha válida.
Agora adicione um command="/thing/to/do"
ao início da chave pública no arquivo authorized_keys
por exemplo
# ls -l $PWD/authorized_keys
-rw-r--r-- 1 tst tst 431 Aug 17 17:54 /home/tst/.ssh/authorized_keys
# cat $PWD/authorized_keys
command="/bin/echo hello" ssh-rsa AAAAB3NzaC1yc2E....etcetc
Agora, esta chave pode ser usada, mas a única coisa que pode ser usada é o comando forçado:
$ ssh -i ~/.ssh/id_rsa tst@test1
hello
Connection to test1 closed.
Se você tentar fazer qualquer outra coisa, ela falhará e ainda forçará o mesmo comando
$ ssh -i ~/.ssh/id_rsa tst@test1 reboot
hello
$