为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

当年话下 2019-07-17 10:03:52
如何在不覆盖TTY的情况下将密码传递给su/sudo/ssh?我正在编写一个C Shell程序su或sudo或ssh..他们都希望自己的密码在控制台输入(TTY),而不是stdin或命令行。有人知道解决办法吗?设置无密码sudo不是一种选择。期待可能是一种选择,但在我的精简系统中不存在。
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

对于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,我曾多次尝试自动化/脚本它的使用,但没有成功。似乎没有任何内置方式可以在没有提示的情况下将密码传递到命令中。正如其他人所提到的,“期待“实用程序似乎旨在解决这一困境,但最终,建立正确的私钥授权是正确的方式,当试图自动化这一点。


查看完整回答
反对 回复 2019-07-17
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

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

echo <password> | sudo -S <command>

我不确定这是否有帮助。

如果sudo接受了一个预先加密的密码,那么我就可以在我的脚本中加密它,而不用担心周围会出现明文密码。不过,这对我和我的情况都适用。


查看完整回答
反对 回复 2019-07-17
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

这可以通过在要连接的目标主机上设置公钥/私钥来完成。第一步是为在本地主机上运行脚本的用户生成ssh键,方法是执行:

ssh-keygen
Enter file in which to save the key (/home/myuser/.ssh/id_rsa): <Hit enter for default>
Overwrite (y/n)? y

然后输入一个空白密码。之后,将ssh键复制到要连接到的目标主机上。

ssh-copy-id <remote_user>@<other_host>
remote_user@other_host's password: <Enter remote user's password here>

注册ssh密钥后,您将能够执行一个静默操作。ssh remote_user@other_host你当地的主人。


查看完整回答
反对 回复 2019-07-17
  • 3 回答
  • 0 关注
  • 841 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信