-1

Я хочу выполнить нижеприведенную команду в скрипте (это означает, что я не могу работать в терминале в интерактивном режиме и, следовательно, могу ввести пароль при появлении запроса):

ssh -o StrictHostKeyChecking = нет user@example.com 'echo mypassword | статус sudo -kS ufw

'

это будет SSH на удаленном хосте и запустить команду UFW состояния на удаленном хосте.

Команда работает нормально, но мне нужно иметь возможность ссылаться на «пароль» из переменной среды с именем

SSHPASS = мой пароль

который хранит пароль, чтобы не выставлять пароль в команде. Как это сделать?

2 ответа2

1

Вы можете передать переменную, содержащую пароль, в ssh помощью команды sshpass :

sshpass -p "$SSHPASS" ssh -o StrictHostKeyChecking=no user@example.com

Тем не менее, это не намного безопаснее, чем иметь пароль в скрипте!

Лучшее решение, когда вам нужно получить доступ к серверам через ssh в скриптах, - перейти к аутентификации на основе ключей.

0

Лучший способ сделать это - установить ключ SSH для пользователя root в удаленной системе, который может вызывать только "состояние ufw".

Сказав это, если я понимаю, что вы пытаетесь сделать, вам просто нужно ввести пароль для программы sudo . Для этого любой из них должен работать:

echo "$PASSWORD" | ssh -o ... user@example.com 'sudo -kS ufw status'

ssh -o ... user@example.com "echo $PASSWORD | sudo -kS ufw status"

Основное различие между ними заключается в том, что первая версия запускает echo в локальной системе, а вторая версия запускает echo в удаленной системе. Выполнение команды с паролем в качестве одного из аргументов командной строки может сделать пароль видимым для других пользователей. Запустив echo на одном или другом хосте, вы делаете пароль видимым для другой группы пользователей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .