Problema na mão
Você deseja bloquear usuários remotos para usar um shell específico quando eles se conectarem ao seu servidor. Como você provavelmente descobriu, chsh
ou outras soluções são voltadas para usuários locais.
Solução
De acordo com esta solução do usuário muru , eu editaria seu sshd_config
para usar a opção ForceCommand
.
You could use a ForceCommand along with Match:
Match Address 10.1.0.0/16 ForceCommand /usr/bin/[some shell]
From man sshd_config:
Match Introduces a conditional block. ...
The arguments to Match are one or more criteria-pattern pairs or the single token All which matches all criteria. The available criteria are User, Group, Host, LocalAddress, LocalPort, and Address.
ForceCommand
Forces the execution of the command specified by ForceCommand, ignoring any command supplied by the client and ~/.ssh/rc if present. The command is invoked by using the user's login shell with the -c option.
Assim, o comando que você especificar seria executado usando o shell de login do usuário, que deve aceitar a opção -c. A conexão é fechada quando o comando sai, então, para todos os efeitos práticos, esse comando é o shell deles.
Usando ForceCommand
no seu arquivo de configuração, você pode forçar o uso de um shell que suporte a opção -c
. Eu também faria referência a esta postagem de falha do servidor para obter mais informações sobre como conclua esta tarefa.
Conclusão
Use suas opções sshd_config
para forçar o uso de um shell que possa suportar -c
, pois isso fechará o shell e a sessão assim que for concluído.
Por favor, comente se você tiver dúvidas ou problemas com esta resposta. Eu aprecio o feedback para corrigir quaisquer equívocos e melhorar minhas postagens. Eu posso atualizar minha resposta conforme necessário.
Melhor da sorte!