A solução acabou sendo:
No lado do cliente, em .ssh/config
:
Host dest
ProxyCommand ssh -q bastion
No lado do servidor, em sshd_config
:
Match Group hopUsers
ForceCommand nc -q0 dest port
Os usuários ' authorized_keys
no servidor não precisam de command=
.
Agora, se um usuário tentar fazer qualquer outra coisa (por exemplo, inicia o ssh sem o ProxyCommand), tudo o que obtém é a saída do netcat
$ ssh user@bastion
SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
Obrigado ao pessoal do #openssh no freenode.