O que eu uso para um problema semelhante é colocar todo o script remoto em um arquivo, digamos /usr/local/bin/debinstall.sh . Minha sugestão para isso no seu caso seria: Tenha um diretório especial onde você coloca os pacotes - vamos chamá-lo de /tmp/remoteinstall para ter um exemplo. Além disso, coloque o usuário ao qual você se conecta no arquivo /etc/suduers e permita que ele execute sudo dpkg -i * sem que seja solicitada uma senha. debinstall.sh ficaria assim:
#!/bin/bash
cd /tmp/remoteinstall
sudo dpkg -i *.deb && rm -f *
Torne este script de propriedade de e chmod 744 /usr/local/bin/debinstall.sh .
Localmente, seu trabalho seria simplesmente enviar seus arquivos .deb e chamar o script:
cd /path/to/files
scp * user@remotemachine:/tmp/remoteinstall
ssh user@remotemachine /usr/local/bin/debinstall.sh
debinstall.sh então instalaria seus pacotes e depois esvaziaria o diretório somente quando a instalação terminasse com sucesso .
Caso algo esteja faltando no $PATH , lembre-se de que nem .bashrc nem .profile são executáveis dessa forma - portanto, você pode querer fornecê-los no início do script remoto ou definir o PATH lá.