【问题标题】:How to pass password in bash without prompting to ask to type in?如何在 bash 中传递密码而不提示要求输入?
【发布时间】:2017-03-08 19:51:11
【问题描述】:

我想做的是: 从我的本地终端运行 bash 脚本,以在 EC2 实例中运行 jar 文件。 但为了运行脚本,我必须先使用 .pem 凭据登录,然后执行 su admin 并输入管理员密码以获得运行权限。到目前为止我想出的命令是这样的:

ssh -i ~/.ssh/my_credentials.pem -t ${EC2IP} 'su admin' "ADMIN_PASSWORD" 'cd /tmp' 'java -jar my-program.jar'

但它仍然提示我输入 ADMIN_PASSWORD,然后,我的终端将登录到那台 EC2 机器,这不是我想要的,我只想完成所有命令,然后继续另一个EC2 实例。

请问我怎样才能做到这一点? 非常感谢!

【问题讨论】:

标签: bash shell ssh amazon-ec2 terminal


【解决方案1】:

您的问题没有合适的解决方案。也许您可以更改/etc/pam.d/su 中的一些安全规则。但我不确定是否以及如何。

我知道为什么不能将sshsu 结合使用...
su 旨在在服务器终端上运行,或者换句话说:
su 需要正确TTY 进行交流。


将密码传递给su 也不起作用。
大多数使用密码的程序都可以选择将密码放入其中,
不幸的是,su 仅使用提示。

A NOT recommended method would be this.


您可以通过ssh 和用户名 admin 连接来避免使用 su
或将权限授予您最初使用的用户。

希望这能让你继续前进。

【讨论】:

  • 不完全准确,没有可能的方法 - 例如,expect 有一个可以编写脚本的模拟 TTY。
  • 更新了我的帖子
  • 完全同意,expect 是错误的——只是指出原始语言在 *possibilities 方面的说法是不准确的。
  • 哎呀,好的。再次编辑了我的帖子。谢谢提示。
【解决方案2】:

A.不要这样做。请改用 sudo。您可能需要在目标上注释掉 /etc/sudoers 中的以下行:

Defaults    requiretty

B.假设你无论如何都要这样做,请使用 expect 为你做这件事:http://www.tcl.tk/man/expect5.31/expect.1.html

但是,说真的,不要这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2021-03-31
    • 1970-01-01
    • 2021-07-20
    • 2014-07-07
    相关资源
    最近更新 更多