问题:如何在不覆盖 TTY 的情况下将密码传递给 su/sudo/ssh?

我正在编写一个 C Shell 程序,它将执行susudossh。他们都希望在控制台输入(TTY)而不是标准输入或命令行中输入密码。

有人知道解决方案吗?

设置无密码sudo不是一种选择。

期望可能是一个选项,但它在我的精简系统中不存在。

解答

对于 sudo,有一个 -S 选项用于接受来自标准输入的密码。这是男人的条目:

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

这将允许您运行如下命令:

echo myPassword | sudo -S ls /tmp

至于 ssh,我已经做了很多尝试来自动化/脚本化它的使用,但没有成功。似乎没有任何内置方法可以在不提示的情况下将密码传递给命令。正如其他人所提到的,“期望”实用程序似乎旨在解决这个难题,但最终,在尝试自动执行此操作时,设置正确的私钥授权是正确的方法。

Logo

更多推荐