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

新手上路,请多包涵

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

有人知道解决方案吗?

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

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

原文由 n-alexander 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 533
2 个回答

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

原文由 Jesse Webb 发布,翻译遵循 CC BY-SA 2.5 许可协议

我写了一些 Applescript,它通过一个对话框提示输入密码,然后构建一个自定义 bash 命令,如下所示:

 echo <password> | sudo -S <command>

我不确定这是否有帮助。

如果 sudo 接受预加密的密码,那就太好了,这样我就可以在我的脚本中对其进行加密,而不必担心回显明文密码。然而,这适用于我和我的情况。

原文由 mlambie 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题