Измените пароль пользователя с командами ssh и usermod

У меня есть две машины, которые имеют ту же группу пользователей на каждом. У меня есть сценарий на одной машине, что я хочу изменить пароль на обеих машинах.

Так, я генерирую случайный пароль, затем хеширую его и передаю его команде usermod, как это:

usermod -p PASSWORD_HASH USER
ssh REMOTE_USER@REMOTE_HOST sudo usermod -p PASSWORD_HASH USER

REMOTE_USER имеет полномочия выполнить ту команду с помощью sudo, не требуя пароля.

Результат этого - то, что пароль успешно изменяется на локальной машине, которую я могу сразу проверить путем попытки:

su USER

Я также проверил/etc/shadow файл, и кажется, что хеш действительно хранится правильно.

Однако, если я перепрыгиваю к другой машине и попытке войти в систему как ПОЛЬЗОВАТЕЛЬ там, я не могу войти. Я получаю ошибку аутентификации. Если я вхожу в систему на удаленной машине с полномочиями суперпользователя и проверяю/etc/shadow файл, хэш пароля полностью искажен и не имеет никакого смысла.

Однако, если, в то время как на той удаленной машине, я выполняю ту же самую команду, не переходя ssh, с помощью

sudo usermod -p PASSWORD_HASH USER

Затем все работает просто великолепно.

Мой вопрос:

Есть ли некоторая деталь здесь, я отсутствую, который заставляет usermod команду NOT работать по ssh по некоторым причинам?

1
задан 18 August 2016 в 00:12

1 ответ

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

1
ответ дан 7 December 2019 в 15:50

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

Похожие вопросы: