I have a script running on a remote host through ssh, processing stdin from the host.

That is the script does something like this (to simplify):

cat $TARBALL | ssh $REMOTE 'tar -x -C -f - && reboot'

This work fine if I use root as the ssh user, but if I don't have root access on the REMOTE, I want to execute the command with sudo instead, eg:

cat $TARBALL | ssh $REMOTE 'sudo tar -x -C -f - && sudo reboot'

I would want the user to be asked the password interactively here, but sudo can't get the password in that situation.

How can I somehow instruct sudo to ask for the password on the local terminal? Seems like the -A option could enable this, but I can't figure what askpass program I might need in this case.

  • ssh $HOST 'sudo -S ls | grep my_file'
    – Larytet
    Apr 1 at 6:45

1 Answer 1


When you have to deal with passwords prompts on standart input, the recommanded Unix way is to use the expect(1) tool which was made specially for that purpose.

  • 1
    How does expect help here? sudo won't have a prompt on stdout and stdin is used to provide other data
    – Droopycom
    May 8, 2021 at 2:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.