Um comando pode ser executado sobre ssh com um usuário nologin?

13

Se um usuário tiver loginShell=/sbin/nologin, ainda é possível

ssh user@machine [command]

supondo que o usuário tenha chaves ssh apropriadas em seu diretório pessoal que possam ser usadas para autenticar?

Meu objetivo é manter o usuário como um nologin, mas ainda capaz de executar comandos em algumas outras máquinas na rede (semelhante ao uso por meio de 'sudo -u'), e estou me perguntando se esse é um curso razoável.

Centimane
fonte
1
Deveria funcionar. O commandé executado em vez do shell de logon.
orion
1
Isso anula o propósito de configurar /sbin/nologincomo um shell. Se sua preocupação for a segurança da conta, desabilitar a autenticação de senha e usar chaves ssh é suficiente.
Creek
@ Creek, há uma diferença entre os shells de login e outras instâncias do shell. Então, o que ele está pedindo não derrota necessariamente o propósito de / sbin / nologin. Pode ser que ele queira executar algum trabalho fora do contexto de um shell de login.
22615 Michael Martinez
7
@orion Errado. O comando é executado pelo shell de login.
Gilles 'SO- stop be evil'
@MichaelMartinez no contexto de seu exemplo, se o shell do usuário for /sbin/nologin, o usuário não poderá efetuar login ou executar comandos na máquina. os cronjobs podem ser executados como usuário e sftppodem ser configurados para abrir sessões, mas a abertura de um shell via ssh não acontecerá #
Creek

Respostas:

17

Definir /sbin/nologincomo o shell do usuário (ou /bin/falseou /bin/true, que é quase equivalente ) proíbe o usuário de efetuar login para executar qualquer comando. O SSH sempre chama o shell de logon do usuário para executar comandos, portanto, você precisa definir o shell de logon como um que seja capaz de executar alguns comandos.

Existem vários shells restritos que permitem aos usuários executar apenas alguns comandos. Por exemplo rssh e scponly são ambos tais conchas que permitem ao usuário para executar alguns comandos pré-definidos (tais como scp, sftp-server, rsync, ...). Veja também Restringir o acesso do usuário no linux e Você precisa de um shell para o SCP?

Gilles 'SO- parar de ser mau'
fonte
Obrigado, acabei me demitindo para fornecer à conta um shell de login para que ele pudesse executar os comandos remotos. A melhor solução provavelmente seria o ssh como usuário atual e chamará sudo -u para o comando ssh, mas isso não é totalmente aplicável no meu caso.
Centimane
1

Parece que a resposta é não.

ssh user@machine [command]

com as teclas ssh no lugar, resulta apenas em:

This account is currently not available

em vez de executar o comando, parece que vou ter que dar acesso ao bash.

Centimane
fonte
-4

Não sei se isso é possível (embora deva ser fácil de testar), mas há um recurso que provavelmente responde à sua pergunta de uma certa maneira e, em qualquer caso, resolve o seu problema.

Você pode adicionar um comando à linha da chave authorized_keys. Nesse caso, este comando é executado, nada mais. Suponho que isso funcione, /sbin/nologinpois o shell deve ser ignorado de qualquer maneira.

Mas você precisaria de uma chave diferente para cada comando que você permitir.

Hauke ​​Laging
fonte
Infelizmente, a I necessidade solução teria que ser mais flexível do que isso
Centimane
se for fácil testar, você deve testá-lo antes de escrever uma resposta.
Michael Martinez
@MichaelMartinez É tarefa do interlocutor fazer testes fáceis antes de perguntar. Não é difícil perceber que não respondeu à pergunta, mas fez uma proposta para o problema que a causou. O que é perfeitamente adequado como resposta. Voto negativo é simplesmente estúpido. Você teria criticado a resposta sem o primeiro parágrafo? Exatamente.
Hauke ​​Laging
3
O comando in authorized_keysé executado pelo shell de login; portanto, não, isso não funciona (não sem a configuração não trivial adicional). (Como voto negativo é “estúpido” por uma resposta errada? Por favor, respeite os outros .)
Gilles 'SO- stop be evil'