У меня есть скрипт, который работает на хосте и создает / запускает / останавливает контейнер докера. Я бы хотел, чтобы скрипт изменил пароль пользователя root в контейнере.
Поскольку контейнер является сервером ssh, я попытался:
sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'
но это не работает Прежде чем идти дальше и тратить больше времени на его отладку, я хотел бы знать, есть ли более разумный способ сделать это.
Я понимаю, что правильный «путь докера» - создать скрипт, запускаемый Dockerfile, который извлекает пароль из общего тома и устанавливает его в качестве пароля root. Это звучит сложно, но я знаю, как это сделать, и хорошо работает для другого образа докера, который я использую. Но я не хочу делать это для этого.
Мне просто нужна команда, которая использует Docker или ssh для неинтерактивного изменения пароля пользователя.
echo username:newpassword | chpasswd
Это не связано с Docker. Вы должны четко указать,
passwd
что вы собираетесь предоставить пароль отstdin
.источник
--stdin
устарела в новых системах Linux. Используйтеchpasswd
вместо этого:echo username:newpassword | chpasswd
Это работает безупречно на Ubuntu 14.04.4 LTS:
В сценарии, который перестраивает контейнер (который должен работать на «хосте»), добавьте следующие строки:
источник
usermod
вместо негоpasswd
.