Você precisará fazer o download do conteúdo do script de alguma forma. Você poderia fazer
ssh remote-host cat script.bash | bash
Mas isso teria o mesmo tipo de problema:
cat script.bash | bash
ou seja, que stdin dentro do script seria o próprio script (o que poderia ser um problema se os comandos dentro do script precisassem receber alguma entrada do usuário).
Então, uma alternativa melhor (mas você precisaria de um shell com suporte para substituição de processo como ksh, zsh ou bash) seria:
bash <(ssh remote-host cat script.bash)
Ambas as abordagens baixam o script na medida em que recuperam seu conteúdo, mas não o armazenam localmente. Em vez disso, o conteúdo é enviado para um canal cuja outra extremidade é lida e interpretada por bash
.
Você também pode ter o conteúdo do script remoto executado no processo bash atual com:
eval "$(ssh remote-host cat script.bash)"
Mas isso faz o download completo do script (e armazena-o na memória) antes de executá-lo.
A solução óbvia seria:
. <(ssh remote-host cat script.bash)
Mas cuidado que algumas versões do bash têm problemas com isso.