Komut dosyasından bir docker kapsayıcısındaki kök parolayı nasıl ayarlayabilirim?


11

Ana bilgisayarda çalışan bir komut dosyası var ve bir docker konteyner oluşturur / başlatır / durdurur. Komut dosyasının kök kullanıcının kapsayıcı içindeki parolasını değiştirmesini istiyorum.

Kapsayıcı bir ssh sunucusu olduğundan denedim: sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root'

ama işe yaramıyor. Devam etmeden ve hata ayıklamak için daha fazla zaman harcamadan önce, bunu yapmanın daha akıllı bir yolu olup olmadığını bilmek istiyorum.

Uygun "docker yolu" Dockerfile tarafından paylaşılan bir birimden parola çeker ve kök parola olarak ayarlar bir komut dosyası yapmak olduğunu anlıyorum. Bu karmaşık görünüyor, ancak nasıl yapılacağını biliyorum ve kullandığım başka bir docker görüntüsü için iyi çalışıyor. Ama bunu bunun için yapmak istemiyorum.

Sadece Docker veya ssh kullanan bir komuta ihtiyacım var.

Yanıtlar:


9
PASSWORD=$(zenity --password --title="Docker" 2>/dev/null)

bir pop-up açar, şifre ister ve döndürür. Kodda saklanan şifre yok

Güvenlikle ilgili fazla bir şeye dikkat etmeden parola ayarlamanız gereken bir docker kabınız varsa, Dockerfile'a bir ifade ekleyebilirsiniz:

RUN echo "root:root" | chpasswd

Dockerfile'ımın ikisinde (farklı proje, ancak önemli bölümlerde aynı) yöntemi sizinki gibi ayarlamanın yolu aynı. Ama biri çalışıyor (buna ssh yapabilirim), diğeri bana izin vermiyor. Neden olduğu hakkında bir fikrin var mı?
ismailsunni

3
+1 Cevap chpasswd için stdin açıklarsa daha şeffaf olurdu:echo username:newpassword | chpasswd
Jonathan Komar

5

Bu Docker ile ilgili değil. Şundan açık bir şekilde passwdşifre sağlayacağınızı söylemelisiniz stdin.

echo 'newpassword' |passwd root --stdin

Giriş için teşekkürler. --stdin ubuntu'da desteklenmemektedir. Çalışmıyor.
Chris

14
--stdinyeni Linux sistemlerinde amortismana tabi tutuldu. chpasswdBunun yerine kullanın :echo username:newpassword | chpasswd
kaldırılamaz

1

Bu Ubuntu 14.04.4 LTS'de kusursuz bir şekilde çalışır:

Kapsayıcıyı ("ana bilgisayarda" çalışması gerekir) yeniden oluşturan komut dosyasına şu satırları ekleyin:

$PASS='<a-good-password>'
echo -e "$PASS\n$PASS" | sudo docker exec -i <container-id-or-name> passwd

Gerçek parolayı bir betiğe koymak, parolaları işlemenin çok güvenli olmayan bir yoludur. Komut dosyasına düzgün bir karma parola koymak ve kullanmak usermodyerine çok daha güvenli olur passwd.
kasperd

İyi nokta, teşekkürler. Bu durumda riskle ilgileniyorum, çünkü bu sadece çok az şey yapan bir liman işçisi konteyneri. Birisi komut dosyasını okuyabiliyorsa, sunucunun geri kalanına zaten sahiptir. Yine de bir dahaki sefere aklında tutacağım :).
Chris
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.