Как передать пароль в 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,
или предоставление прав пользователю, который вы использовали в первую очередь.
Надеюсь, это поможет вам.