Executando o script bash de um usuário do mesmo grupo que se conecta a um servidor usando a chave SSH de outro usuário do mesmo grupo

2

Eu fiz um script como este:

sync.sh
#!/bin/bash
#1st backup the file
scp user-1@ip-1:/directory/file1 /backup/location/
#2nd sync/overwrite my file to that server
scp /local/file2 user-1@ip-1:/directory/file1
#3rd restart service associated with that file
ssh -t user-1@IP-1 << EOF
  sudo systemctl restart some.service
EOF

a permissão e os privilégios do script são os seguintes:

-rwxr-x--x. 1 user-1 group-1 ~/sync.sh

Eu tenho ssh-keys configuradas entre user-1@local to user-1@IP-1 , configurei o visudo para reiniciar o serviço e tudo funciona muito bem se eu executar o script usando user-1 .

Eu quero que qualquer other_user em group-1 consiga rodar esse script, mas a chave ssh não funciona dessa forma, ele tenta gerar outra chave. O que estou perdendo para fazer isso?

Ou devo usar uma abordagem diferente? Eu vi que eu poderia usar o rsync para mover arquivos, mas que tal reiniciar o serviço?

obrigada a todos.

    
por kgtr 31.08.2018 / 09:54

1 resposta

0

Esta não é uma maneira segura de fazer as coisas.

Uma chave é o que autentica os usuários.

  1. Dê a cada usuário sua própria chave, ou todos podem simplesmente fazer o login como qualquer outra pessoa simplesmente usando outro nome de usuário.

  2. Modifique seu script para que cada nome de usuário seja obtido da variável de ambiente.

  3. Use o auth-agent para gerenciar chaves. Dessa forma, você não precisará colocar caminhos para as chaves no seu script.

  4. Muitos servidores e muitos usuários?

    • Você provavelmente deve olhar para o Kerberos e o PAM.

    • Outra opção é criar um script para adicionar sua lista de usuários ao arquivo sudoers e canalizar esse script para um shell de superusuário em cada servidor em ssh.

por 16.09.2018 / 15:15