ssh 和 sudo:如何在处理 stdin 的 ssh 脚本中询问 sudo 密码

ssh 和 sudo:如何在处理 stdin 的 ssh 脚本中询问 sudo 密码

我有一个通过 ssh 在远程主机上运行的脚本,处理来自主机的标准输入。

该脚本执行类似的操作(为了简化):

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

如果我使用 root 作为 ssh 用户,那么这工作正常,但如果我在远程上没有 root 访问权限,我想用 sudo 执行命令,例如:

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

我希望在这里以交互方式询问用户密码,但在这种情况下 sudo 无法获取密码。

我怎样才能以某种方式指示 sudo 在本地终端上询问密码?似乎 -A 选项可以启用此功能,但我无法弄清楚在这种情况下我可能需要什么 Askpass 程序。

答案1

当您必须处理标准输入上的密码提示时,推荐的 Unix 方法是使用expect(1)专门为此目的而制作的工具。

相关内容