通过 ssh 标准输入的 sudo 密码有任何安全风险吗?

Any security risks with sudo password from standard input over ssh?

我想在远程服务器上通过 ssh 执行 sudo 并通过标准输入提供密码。以下代码位于访问受限的安全服务器上的 shell 脚本中。预先询问密码,服务器使用所有相同的 sudo 密码。 someaction 肯定需要几秒钟才能执行。

这是 shell 脚本摘录:

read -s -p "please enter your sudo password" PASSWORD
ssh user@host1 -t "echo '$PASSWORD' | sudo -S someaction"
ssh user@host2 -t "echo '$PASSWORD' | sudo -S someaction"

我的问题:在管道中使用 echo 安全吗?还有这里有没有可能出现的安全问题,比如在远程服务器上记录回显结果等?

也许有人有更好的建议?

注意:我知道其他工具也可以做到这一点,比如 ansible 等。我不是在寻找另一个类似的工具,只是想知道以上述方式使用 ssh/echo/sudo 是否安全。

是的!

只要命令是 运行 任何可以查看所有进程的人都可以查看该密码,通过 运行 ps aux | grep echo:

root     [..] zsh -c echo topsecret | sudo -C action

您可以配置 sudo 不询问用户执行特定任务的密码,这肯定会提高此解决方案的安全性。