Você pode ter apenas um comando por chave, porque o comando é "forçado".
Mas você pode usar um script de wrapper. O comando chamado obtém a linha de comando original como variável de ambiente $SSH_ORIGINAL_COMMAND
, que pode ser avaliada.
Por exemplo, coloque isso em ~/.ssh/allowed-commands.sh
:
#!/bin/sh
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.
case "$SSH_ORIGINAL_COMMAND" in
"systemctl restart cups")
systemctl restart cups
;;
"shutdown -r now")
shutdown -r now
;;
*)
echo "Access denied"
exit 1
;;
esac
Em seguida, referencie-o ~/.ssh/authorized_keys
com
command="/home/user/.ssh/allowed-commands.sh",…
SSH_ORIGINAL_COMMAND
(porman sshd
) para que esteja disponível em scripts. Também para dar um exemplo de scripts automatizados que permitemSSH_ORIGINAL_COMMAND
a execução de certos padrões . Veja também unixwars.blogspot.com/2014/12/getting-sshoriginalcommand.htmlNo grande SSH, The Secure Shell: O Guia Definitivo de O'Reilly, no capítulo oito, há um bom exemplo dado usando um script como o seguinte:
Usando isso em seu
.authorized_keys
arquivo, como:... fornece isso ao fazer
ssh
:fonte
scp
,sftp
e todas as outras coisas que você pode achar útil algum dia.command
opção em geral?Outras abordagens usam, por exemplo, um shell restrito para o usuário especificado ou usam um wrapper que restringe os comandos a todos os arquivos / scripts encontrados em um diretório específico, permitindo assim aumentar a lista de comandos sem alterar o wrapper.
Outro artigo descreve um script genérico, que também permite argumentos de linha de comando para os comandos permitidos, mas permite bloqueá-los com regras expressas como expressões regulares.
Este exemplo seria expresso da seguinte maneira:
E um
.onlyrules
arquivo seria criado com este conteúdo:A vantagem dessa abordagem 'única' é que não há necessidade de escrever scripts individuais para cada usuário e situação.
fonte
ForcedCommand