Como executo scripts bash como root sobre SSH?

3

Eu tenho um número de scripts centralizados, que instalam certas partes do middleware (por exemplo, JBoss-AS, JBoss-EWS, etc). A idéia é usar esperar para escrever um script que execute o script (que pode conter comandos serveral e se ... then ... else, bem como estruturas de loop) em outro servidor, sob outro usuário.

O que eu preciso é um script de expectativa que execute algo assim:

central $ ssh <user>@<remote> "sudo local-script"

Eu tentei enviar coisas como cat local-script | ssh -t <user>@<remote> sudo , mas o sudo não permite isso. Quando obtenho a sequência acima, ou seja, executar sudo local-script por meio de um canal ssh, posso usar o autoexpectar para gerar um arquivo esperado que funcione (também coisas como ssh -t <user>@<remote> sudo < cat local-script não funcionam.

Eu sei que você pode usar isso para executar comandos que estão no servidor remoto, então essa não é a minha pergunta.

Como a maioria dos scripts de instalação que usamos precisa de permissões de root, e porque você não usa o NOPASSWD para root por razões óbvias, isso é possível e como?

    
por Willem 31.10.2011 / 15:20

3 respostas

3

Crie uma conta de usuário dedicada no servidor apenas para usar para essa finalidade. Configure /etc/sudoers no servidor para que os únicos comandos que a conta de usuário dedicada possa executar sejam os desejados. Além disso, configure /etc/sudoers no servidor para que a conta de usuário dedicada não exija uma senha para usar o sudo. Então ssh para o servidor como usuário dedicado e execute sudo para executar os comandos desejados como root.

    
por 21.05.2012 / 19:33
0

Você não pode adicionar "sudo" e a senha ao material que é canalizado para o ssh? Eu já fiz isso antes, quando as interfaces de acionamento remoto esperavam.

    
por 31.10.2011 / 15:52
0

Para uma solução pragmática: você pode usar um arquivo remoto temporário.

Seu script seria então

  1. scp do arquivo de script para o controle remoto /tmp/randomfilename .
  2. ssh -t user@remote sudo sh /tmp/randomfilename

Na sua ingenuidade, esse é um risco de segurança óbvio, pois o conteúdo de /tmp/randomfilename pode ser alterado pelo usuário scp , mas se for relacionado a operações locais, na prática isso não deve ser uma preocupação (a menos que você não o faça) Eu confio no usuário local, mas você tem outros problemas maiores, eu acredito :-)).

    
por 01.06.2012 / 08:51

Tags