2010-02-26 16 views
33

Za każdym razem, gdy tkanina działa, prosi o podanie hasła roota, może zostać wysłana na tej samej stronie w przypadku automatycznych propozycji.hasło do tkaniny

fab staging test 
+0

uznałbym bardzo starannie przed przyjęciem ** ** że każda strategia opierała przechowywanie haseł w postaci zwykłego tekstu - jako vars środowiska, zapisane w skrypty, nawet wpisane na linii poleceń - tak jak nienawidzę zaprzeczać takiemu luminarzowi jak AM (naprawdę, człowieku, dałeś mi ** wiele ** informacji na przestrzeni lat) - żyje w twojej historii poleceń i stwarza ryzyko bezpieczeństwa. – gomad

Odpowiedz

47

fab -h pokaże wszystkie opcje, można też je here czytać.

W szczególności, i podać,

-p hasło, --password = hasło

Zestawy env.password do danego łańcucha; zostanie użyty jako domyślne hasło podczas nawiązywania połączeń SSH lub wywoływania programu sudo.

52

Wiem, że pytasz o hasło, ale czy nie lepiej skonfigurować system, aby można było wykonywać tkaniny (np. SSH) bez hasła?

W tym celu na komputerze lokalnym zrobić:

  1. ssh-keygen i zgadza się ze wszystkimi domyślne (jeśli masz żadnych powodów zrobić inaczej)
  2. cat ~/.ssh/id_rsa.pub i skopiować ten klucz

na komputerze zdalnym :

  1. mkdir ~/.ssh && chmod 700 ~/.ssh
  2. touch ~/.ssh/authorized_keys2 && chmod 600 ~/.ssh/authorized_keys2
  3. Wklej skopiowany klucz do authorized_keys2

Od teraz Twój zdalnej maszynie „ufa” lokalnym komputerze i pozwala zalogowaniu ją bez hasła. Poręczny.

+2

Musiałem uruchomić 'chmod 700 ~/.ssh' aby uruchomić go do pracy –

+6

użycie ssh-copy-id może być szybsze: ' 'ssh-copy-id'' Użycie:/usr/bin/ssh-copy -id [-i [plik_identyfikatora]] [użytkownik @] maszyna – HVNSweeting

+0

+1 dla ssh-copy-id. Schludny! – dennis

6

Jednym ze sposobów, aby to zrobić bez wprowadzania hasła na liście procesów (polecenia pojawiają się w ps aux) jest umieszczenie go w fabfile.py tak:

from fabric.context_managers import env 
env.password = 'PASSWORD' 

Put, że zanim cokolwiek, że idzie do zdalnego systemu i nie będzie już pytać o hasło.

+0

Po prostu notatka, generuje to błąd w najnowszych wersjach Fabric 1.5.3 i Paramiko 1.9.0. –

+0

Po prostu usuń 'from fabric import env' – Crazenezz

+1

Nowy pakiet to context_managers,' from fabric.context_managers import env' –

47

Można również ustawić hasła dla każdego hosta. To nie było dla mnie oczywiste, więc o to idzie dla każdego, kto szuka w ten sposób:

from fabric import env 
env.hosts = ['[email protected]:port1', '[email protected]'] 
env.passwords = {'[email protected]:port1': 'password1', '[email protected]': 'password2'} 

Fabric bufory stosowane haseł w słowniku env.passwords. Ustawia to pamięć podręczną, używając pełnego ciągu hostów jako klucza tego słownika i hasła jako wartości. Jeśli słownik zostanie ustawiony samodzielnie przed wykonaniem dowolnego zadania, Fabric nie będzie go w ogóle żądać.

+0

wielkie dzięki za tę odpowiedź – qre0ct

8

Wystarczy dodać, aby każdy, kto przyjeżdża tutaj z poziomu wyszukiwania, może podać opcję -I, gdy uruchomi fab, żądając podania hasła domyślnego.W ten sposób nie będą widoczne w historii poleceń

przykład:

$ fab -I my_task 
Initial value for env.password: