4

Я пытаюсь сбросить пароль root через SSH, используя sudo, так как прямой вход в систему как root отключен.

Я использую приведенную ниже команду для сброса пароля:

sshpass -f .pass ssh kj@server2 'bash -s' < password.sh

При запуске мне предлагается ввести пароль sudo, и он не работает.

У пароля password.sh ниже содержание.

MYPASS=abcd@123

echo $MYPASS | sudo -kS bash -c 'echo passwd | passwd root --stdin'

Как я могу успешно сбросить пароль, используя SSH и sudo?

3 ответа3

1

Вы могли бы достичь этого, написав что-то вроде этого:

ssh user@machine 'sudo passwd' << END
<password>
<password>
END

Я также хотел бы порекомендовать вам использовать сертификаты, а не пароли, для входа на ваши машины, поскольку это сделало бы такие процедуры немного проще

0

Я смог решить эту проблему, выполнив следующую команду:

sshpass -f .pass ssh kj@server2 "echo abcd@123 | sudo -kS bash -c 'echo passwd | passwd root --stdin'"

Если есть лучшее решение, я буду рад вашим предложениям.

0

Такие символы, как $"\` в $MYPASS могут быть расширены с помощью bash, и поэтому пароль, отправляемый в sudo, не будет таким, как вы ожидаете.

Чтобы напечатать строку буквально без расширения bash, используйте printf '%s\n' "$1"

sshpass -f "$SSH_PASS" ssh -t -l "$SSH_USER" -p "$SSH_PORT" "$SERVER" \
    "printf '%s\n' \"root:$PASSWORD\" | sudo chpasswd -c SHA512"

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