O comando ssh -L 3307:remote:3306 user@remote
nunca retornará, porque ele abrirá um shell e o manterá aberto.
O SSH se comporta da seguinte maneira: Ele mantém a conexão aberta enquanto um comando é executado ou o túnel é usado.
Então, o que você quer fazer é ssh user@remote sleep 10 &
. Isso dá ao comando mysqldump tempo suficiente para abrir a conexão, mas assim que o mysqldump fecha essa conexão, o túnel não é usado e o SSH sai.
btw, você pode ter que usar 3307: localhost: 3306, se o servidor não permitir conexões externas. (Isso funciona porque o nome do host é resolvido no lado do servidor, não no seu cliente)