A razão é que quando você executa algo como
ssh user@remote command
O command não é executado apenas na máquina remota, ele também é pesquisado na máquina remota. Portanto, quando você executa ./conn.sh cmd.sh , está se conectando ao controle remoto e, em seguida, está tentando executar um script chamado cmd.sh no remoto . Como não existe tal script (ele é armazenado em sua máquina local), a execução falha e você vê esse erro.
Você pode fazer o que descreve ao alterar seu conn.sh para:
#!/bin/bash
sshpass -p PASSWORD ssh -o StrictHostKeyChecking=no [email protected] \
bash -s < ""
E, em seguida, execute
./conn.sh /local/path/to/cmd.sh
Isso abrirá um shell bash na máquina remota. O -s diz ao bash para ler os comandos da entrada padrão e o < "" fornece o primeiro argumento dado a conn.sh como a entrada para o bash shell.
Tem certeza de que precisa fazer isso? O que você descreve é quase certamente um problema XY . A solução simples é criar o cmd.sh no servidor remoto. Então você pode fazer
./conn.sh /remote/path/to/cmd.sh