O SSH conecta stdin, stdout e stderr do shell remoto ao seu terminal local, para que você possa interagir com o comando que está sendo executado no lado remoto.
Como efeito colateral, ele continuará funcionando até que essas conexões tenham sido fechadas, o que acontece somente quando o comando remoto e todos os seus filhos (!) tiverem terminado (porque os filhos, que é o que "&" inicia, herdam std * do processo pai e mantenha-o aberto).
Então você precisa usar algo como
ssh user@host "/script/to/run < /dev/null > /tmp/mylogfile 2>&1 &"
As tags & lt ;, > e 2 > & 1 redirecionam o stdin / stdout / stderr para longe do seu terminal. O "&" então faz seu script ir para o segundo plano. Na produção, você naturalmente redirecionaria o stdin / err para um arquivo de log adequado.
Veja
Editar:
Acabei de descobrir que o < /dev/null
acima não é necessário (mas redirecionar stdout / err é ). Não faço ideia do porquê ...