2010-08-17 20 views
5

Parola tabanlı kimlik doğrulaması gerektiren görevleri otomatik hale getiren basit bir Bash komut dosyası kullanıyorum. Şu anda düz metin olarak kimlik bilgilerini depolamak:Yapılandırma dosyasında saklanan şifrenin şifrelenmesi/şifresini çözme

$ cat ~/.myconfig 
username=foo 
password=bar 

Açıkçası bu kötü - ben benim özel/kamusal anahtar çiftini kullanarak şifreyi şifrelemek/şifre çözmek için basit bir yol olup olmadığını merak ediyorum. Şifreleme için Başka Bir Şifre kullanmak çok fazla kazanmaz, bu yüzden otomatik olarak gerçekleşmesini istiyorum. Ben (burada ve başka yerlerde civarında) biraz araştırma yaptık, ama bu sefer çıkış yolu benim derinlik duyuyorum ettik

...

cevap

3

.

oluşturun:

\#!/bin/bash 

salt=12345_ 

protocol=sha1sum 

read -p "Enter login: " username 
read -p -s "Password: " pass1 
read -p -s "Repeat: pass2 

if [ "pass1 != pass2" ]; then echo "Pass missmatch"; exit 1; else password=pass1; fi 

echo -en "$username " >> ./mypasswd 
echo -e "${salt}${password} | $protocol | awk '{print $1}'" >> ./mypqsswd 

okuma:

\#!/bin/bash 
salt=12345_ #(samesalt) 
protocol=sha1sum 

read -p "Enter username: " username 
read -p -s "Enter password: " password 

if [ `grep $username ./mypasswd | awk '{print $2}' != `echo -e "`echo ${salt}${password} | $protocol | awk '{print $2}'`" ]; then echo -e "wrong username or password"; exit 127; else echo -e "login successfull"; fi 

kodunuzu var.

+0

MD5 güvensizdir. Bunun yerine SHA kullanın. ('sha1sum', sha256sum', sha512sum', _etc_., istediğiniz karma uzunluğuna bağlı olarak.) –

+0

daha iyi, sonra düz metinde sakladım ve sadece nasıl çalıştığını gösteriyorum .. Sadece protokol ekliyorum değişken, bu yüzden sadece değiştirin ve sha256 olsun sha512 .. vb – Sky

+0

Teşekkürler, bu yararlı görünüyor! – AnC

2

basitçe sonra onun SHA1 saklamak şifresini gizlemek isterseniz. Girilen şifrenin karmasını saklanan karma ile karşılaştırın.

+1

Ve 'chmod go-rw myconfig' dosya izinlerini sözlük saldırılarına karşı değiştirin. – Eike

+0

'Otomatik', girilen şifre olmadığı anlamına gelir. Girecek kimse yok. –

+0

GregS haklıysa - kullanıcının başka bir şifre girmesini gerektirerek gerçek şifreyi girmeyi otomatikleştirirsem, gerçek şifreyi ilk sırada saklamanın pek bir anlamı yoktur. – AnC

3

Görevinizi otomatikleştirmek için parolayı sağlamak anlamına gelir; Parolaları şifrelemek/gizlemek için bir fark yaratmayacaksınız, şifrelenmeyi de sağlamanız gerekecektir.
Bu ikilemin tek yolu, parolalarınızı sizin için kaydeden ssh-agent örneğinde olduğu gibi aracı benzeri bir programdır.

(düzenleme: düzeltilmiş bağlantı) Sen, md5 toplamı içine şifreyi saklamadan önce biraz tuz ekleyebilirsiniz

+0

ssh-agent, aradığım gibi geliyor - ancak, tam olarak nasıl kullanmalıyım diye düşünemiyorum. a) Şifreli şifreyi dosyadan yüklediğimi farz edersem nasıl şifresini çözebilirim? b) Şifreyi ilk sırada şifrelemek için ne kullanırım? (Bunun ayrı, manuel bir adım olmasını bekliyorum.) – AnC

+0

ssh-agent, nasıl uygulanabileceğine bir örnek olarak verildi. Ancak, bu ssh ile ilgili bağlantılar için özel bir çözümdür. Özel durumunuz için benzer bir şey yaratılabilir, ancak uygulamanıza nasıl bağlı olabilir. – pavel

+0

Sanırım ilgili anahtar kutusunu belirlemek ve erişmek için bir anahtarlık/anahtarlık yöneticisi düşünüyordum - ama bunun için taşınabilir bir çözüm olmayabilir. (Uygulamam sadece bazı komutları gönderen bir Bash betiğidir - HTTP temel auth'ını curl ile düşünün.) – AnC

İlgili konular