Eu tenho o servidor Alice e o servidor Bob. Alice está bem fechada e precisa continuar assim. Bob está exposto à internet pública.
De tempos em tempos, preciso que Bob faça um script rodar em Alice. (a causa do script pode ser de um usuário externo ou de um cron job em Bob.)
[Eu tenho acesso total a ambas as máquinas]
Isso é trivial o suficiente para fazer com o SSH. No entanto, isso significa que a chave para Alice agora está armazenada em Bob. Se Bob, quando comprometido, poderia expor a chave para Alice. (A paranóia é profunda o suficiente para preocuparem-se com o fato de que o acesso físico a Bob poderia expor as chaves a Alice. Por exemplo, puxando o carro de Bob e olhando para ele. Alice está trancada em uma sala separada)
Eu não estou olhando para executar qualquer comando. Existem alguns scripts específicos em Alice que eu preciso disparar. (Se houver demitido maliciosamente eles não vão realmente machucar nada)
Meu plano de jogo atual é instalar o Apache2 (ou alguma outra interface CGI segura) em Alice e criar scripts CGI que farão o que eu quiser. Estes seriam chamados por Bob conforme necessário. (Posso adicionar segurança aos scripts para verificar se Bob os enviou)
Então, para disparar o script em Alice eu apenas faria um GET de Bob para o script que eu executo.
Então, tudo isso foi dito: isso faz sentido? Que coisa óbvia estou sentindo falta aqui?
Estou respondendo minha própria pergunta aqui. Mas eu quero ter certeza de que estou fazendo isso corretamente antes de fazer uma bagunça.
[um pouco mais detalhadamente: os próprios scripts são bastante inofensivos, mas ter privilégios suficientes para executar os comandos nos scripts pode ser um problema. Pense em 'rm oldlog' vs 'rm *'. Os scripts também deixam um pouco mais de trilha de auditoria que poderia ser ignorada pela execução de comandos diretamente.]