Tengo un script que se ejecuta en el host y crea / inicia / detiene un contenedor acoplable. Me gustaría que el script cambie la contraseña del usuario raíz dentro del contenedor.
Como el contenedor es un servidor ssh, probé:
sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'
Pero no funciona. Antes de seguir adelante y pasar más tiempo depurándolo, me gustaría saber si hay una manera más inteligente de hacerlo.
Entiendo que la "manera de docker" adecuada es crear un script ejecutado por el Dockerfile, que extrae la contraseña de un volumen compartido y la establece como la contraseña de root. Esto suena complicado, pero sé cómo hacerlo y funciona bien para otra imagen de acoplador que uso. Pero no quiero hacerlo por este.
Solo necesito un comando que use Docker o ssh para cambiar la contraseña de un usuario de manera no interactiva.
echo username:newpassword | chpasswd
Esto no está relacionado con Docker. Debe decir explícitamente
passwd
que va a proporcionar una contraseñastdin
.fuente
--stdin
se ha depreciado en los sistemas Linux más nuevos. Utilice en suchpasswd
lugar:echo username:newpassword | chpasswd
Esto funciona perfectamente en Ubuntu 14.04.4 LTS:
En el script que reconstruye el contenedor (que debería ejecutarse en el "host"), agregue estas líneas:
fuente
usermod
en lugar depasswd
.