我想要做的是:从本地终端运行一个 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 实例。
请问我该如何实现?非常感谢!
答案1
您的问题没有合适的解决方案。也许您可以更改一些安全规则/etc/pam.d/su
。但我不确定是否可以以及如何更改。
我知道为什么你不能与...ssh
结合使用旨在在服务器终端上运行,或者换句话说:需要正确的su
su
su
终端电话沟通。
传递密码su
也不起作用。
大多数使用密码的程序都有一个选项可以将密码放入其中,
不幸的是,su
只能使用 promt。
su
您可以通过ssh
用户名管理员连接来避免使用,
或者首先将权限授予您正在使用的用户。
希望这能帮助你前进。
答案2
A. 不要这样做。改用 sudo。您可能需要在目标上从 /etc/sudoers 中注释掉以下行:
Defaults requiretty
B. 假设您无论如何都要这样做,那么使用 expect 来为您完成: http://www.tcl.tk/man/expect5.31/expect.1.html
但是,说实话,不要这么做。