Você tem algumas escolhas. Aqui estão algumas sugestões:
-
Conecte-se do servidorB à raiz @ servidorA usando a autenticação baseada em certificado e execute o script no contexto raiz desse servidor.
Você pode usar a mesma autenticação baseada em certificado para recuperar o arquivo resultante com
scp
oursync
. A desvantagem é que sua conta no serverB, em seguida, tem acesso total não-mitigado ao root @ serverA. no entanto, em um ambiente bem gerenciado, isso pode ser aceitável. -
Conecte-se do servidorB à raiz @ servidorA usando a autenticação baseada em certificado que limita a conexão à execução de um único comando - seu script.
Se o comando tiver que enviar seu arquivo para stdout , ele poderá ser capturado diretamente da sessão
ssh
de serverB para root @ serverA sem a necessidade de transferir o arquivo após a conclusão do script. Sua conta no servidorB não teria acesso arbitrário ao root @ serverA.Um exemplo da entrada necessária para root @ serverA em seu arquivo
~root/.ssh/authorized_keys
para executar o comandobake
pode ser um pouco parecido com isto:ssh-rsa AAAAB3Nza...Fr9FvN me@roaima,command="/usr/local/bin/bake",no-agent-forwarding,no-port-forwarding,no-X11-forwarding
-
Conecte-se do serverB ao serverA e use
sudo
para executar o script. Você pode configurarsudo
para permitir que sua conta de usuário única execute o script como root, mas sem exigir uma senha.Esta entrada em
/etc/sudoers
permitiria ao usuário "roaima" executar o script nomeado com ou sem argumentos como root usando um comando comosudo /usr/local/bin/bake --fruit=apple,blackberry --type=pie
roaima ALL = NOPASSWD: /usr/local/bin/bake
-
Coisas mais complicadas com triggers, como conectar-se a uma porta TCP definida no serverA e ativar o script, como root.
Isso significa que qualquer pessoa que possa acessar essa porta TCP no servidorA pode iniciar seu script, portanto, é necessário considerar problemas de DDOS e impedir que várias instâncias do script sejam executadas simultaneamente. No entanto, isso eliminaria a necessidade de ter qualquer acesso root interativo no serverA - mesmo que mediado com
sudo
.