How to Pass the Password to Su/Sudo/Ssh Without Overriding the Tty

How to pass the password to su/sudo/ssh without overriding the TTY?

For sudo there is a -S option for accepting the password from standard input. Here is the man entry:

    -S          The -S (stdin) option causes sudo to read the password from
the standard input instead of the terminal device.

This will allow you to run a command like:

echo myPassword | sudo -S ls /tmp

As for ssh, I have made many attempts to automate/script it's usage with no success. There doesn't seem to be any build-in way to pass the password into the command without prompting. As others have mentioned, the "expect" utility seems like it is aimed at addressing this dilemma but ultimately, setting up the correct private-key authorization is the correct way to go when attempting to automate this.

SSH: How to know the password of sudo users created automatically by gcloud?

  1. You can change the passport by first elevating to root user:

sudo su -

  1. Then change the password for the user in question:

passwd mysername

Is there a way to automatically pass a password to sudo without having to type it in?

Let’s say your password was in the file called password

Pipe it into sudo -S


echo password | sudo -S rm /path/to/item

Related Topics

Leave a reply