Gostaria de configurar um SSH Daemon em um dos meus servidores para que determinados usuários em clientes remotos possam executar determinados comandos no servidor. Cada usuário, identificado por uma determinada chave pública, deve ser capaz de executar um comando específico para ele.
Em geral, parece haver muitas opções para fazer isso, sendo três delas:
ForceCommand ...
insshd_config
: Isso não é flexível o suficiente no meu caso, pois cada um desses usuários (chaves públicas) deve acionar outro comando.command="..."
inauthorized_keys
: Isso é ideal para minha situação, pois cada usuário tem umauthorized_keys
arquivo individual em seu diretório inicial nesse servidor e, portanto, cada usuário pode executar seu próprio comando individual. Mas eu tenho um problema de compreensão com esse método que me leva à questão detalhada abaixo.O
/usr/lib/restricted-ssh-commands
método: Este método é um pouco grande demais para o meu caso de uso porque cada um dos meus usuários precisa apenas de um comando para executar; além disso, as expressões regulares que são usadas com este método devem ser elaboradas com muito cuidado, pois de outra forma impõem um risco de segurança.
Como mencionado acima, gostaria de optar pelo segundo método. No entanto, em todos os tutoriais que li (e isso foi muito, por exemplo, este ) foi enfatizado que devemos adicionar não apenas a command=...
opção nos authorized_keys
arquivos, mas várias outras, assim:
command="/bin/foo bar baz",no-port-forwarding,no-x11-forwarding,no-agent-forwarding ssh-rsa ...
Agora estou preocupado com a relação entre /etc/ssh/sshd_config
(onde já configurei todas as opções do daemon que são importantes para mim em todo o sistema) e as opções nos authorized_keys
arquivos.
Eu li man authorized_keys
o que me deu a impressão de que authorized_keys
tem precedência sshd_config
para as opções que estão em ambos. No entanto, não está claramente declarado (a menos que eu tenha perdido) o que acontece com as opções que não estão em authorized_keys
, mas estão em sshd_config
; eles serão retirados sshd_config
?
Para dar um exemplo real: no-x11-forwarding
é uma das opções que podemos (e devemos, de acordo com todos os tutoriais que li) usar em authorized_keys
. Mas já entrei X11Forwarding no
. sshd_config
Então, o que acontece se eu sair no-x11-forwarding
de authorized_keys
?
Ter que incluir todas as opções relevantes em cada authorized_keys
arquivo seria um pouco estúpido, mas mais uma vez, todos os tutoriais que encontrei enfatizavam que deveríamos fazê-lo.
Agradeceria se alguém pudesse me dar uma luz sobre isso.
Se você usar um servidor openssh recente o suficiente (>= versão 7.2 ), obterá a opção
restrict
noauthorized_keys
arquivo:então você pode ter certeza de que todas as restrições possíveis se aplicam e ainda serão aplicadas no futuro. Dependendo das necessidades, pode ser necessário adicionar parâmetros de habilitação adicionais após
restrict
(exemplo:pty
para uso interativo).