Как передать пароль в bash без запроса на ввод?

Я хотел сделать: запустить скрипт bash из моего локального терминала, чтобы запустить файл jar в экземпляре EC2. Но чтобы запустить скрипт, мне сначала нужно войти в систему с учетными данными.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.

Как я могу достичь этого, пожалуйста? Большое спасибо!

2 ответа

А. Не делай этого. Вместо этого используйте sudo. Вам, вероятно, нужно закомментировать следующую строку из / etc / sudoers на цели:

Defaults    requiretty

Б. Предполагая, что вы все равно это сделаете, используйте для этого ожидаемую функцию: http://www.tcl.tk/man/expect5.31/expect.1.html

Но, если серьезно, не делай этого.

Нет правильного решения вашей проблемы. Может быть, вы можете изменить некоторые правила безопасности в /etc/pam.d/su, Но я не уверен, если и как.

Я знаю, почему вы не можете использовать ssh в комбинации с su...
su предназначен для запуска на серверном терминале или другими словами:
su нужен правильный TTY для общения.


Передача пароля su тоже не работает.
Большинство программ, использующих пароль, имеют возможность поместить в него пароль,
к несчастью su Используйте только Promt.

НЕ рекомендуемый метод будет следующим.


Вы могли бы избежать использования su подключив через ssh и имя пользователя admin,
или предоставление прав пользователю, который вы использовали в первую очередь.

Надеюсь, это поможет вам.

Другие вопросы по тегам