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

标签 linux ssh passwords sudo su

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

有人知道解决办法吗?

设置无密码 sudo 不是一个选项。

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

最佳答案

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

    -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”实用程序似乎旨在解决这一困境,但最终,设置正确的私钥授权是尝试自动化此操作时的正确方法。

关于linux - 如何在不覆盖 TTY 的情况下将密码传递给 su/sudo/ssh?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39951223/

相关文章:

matlab - 通过 ssh 运行 Matlab GUI?

ruby-on-rails-4 - 如何在 ruby​​ on rails 4 中使用 secrets.yml 将密码存储在 database.yml 中

c# - MVC 3,用于用户注册过程的 View 模型。密码验证无法正常工作

node.js - 如何从文件路径获取应用程序名称/元数据

linux - 打开愿望而不窃取焦点

node.js - 是否有任何标准警告(stdwarn),如 stdout 和 stderr?

c++ - shmget shmat 无法正常工作

svn - 尝试结帐SVN时为什么会收到 “/RCS/trunk,v: No such file or directory”?

linux - 通过 SSH 与另一个终端应用程序通信

visual-studio-2010 - 如何在vc++中创建密码字段和按钮