Puede pasar un comando como argumento a SSH para ejecutar ese comando en el servidor y luego salir:
ssh user@host "command to run"
Esto también funciona para una lista de múltiples comandos:
ssh user@host "command1; command2; command3"
O alternativamente:
ssh user@host "
command1
command2
command3
"
Como otros usuarios han señalado antes que yo, ejecutar suen el servidor lanzará un nuevo shell en lugar de ejecutar comandos posteriores en el script como root. Lo que debe hacer es usar uno sudoo su -c, y forzar la asignación de TTY a SSH con el -tinterruptor (requerido si necesita ingresar la contraseña de root):
ssh -t user@host 'su - -c "command"'
ssh -t user@host 'sudo command'
En resumen, una forma de lograr lo que quieres hacer sería:
#!/bin/bash
ssh -t user@172.1.1.101 "
sudo some_command
sudo service server_instance stop
sudo some_other_command
"
Como sudonormalmente recuerda su nivel de autorización durante unos minutos antes de solicitar nuevamente la contraseña de root, simplemente anteponer sudotodos los comandos que necesita ejecutar como root es probablemente la forma más fácil de ejecutar comandos como root en el servidor. Agregar una NOPASSWDregla para su usuario /etc/sudoershará que el proceso sea aún más sencillo.
Espero que esto ayude :-)