2010-02-26 51 views
33

Mỗi lần vải chạy, nó yêu cầu mật khẩu gốc, nó có thể được gửi cùng một cho các đề xuất tự động hay không.Mật khẩu vải

fab staging test 
+0

tôi sẽ xem xét rất cẩn thận trước khi áp dụng bất kỳ ** ** chiến lược liên quan đến lưu trữ mật khẩu trong bản rõ - như môi trường vars, lưu trong kịch bản, thậm chí được nhập vào dòng lệnh - nhiều như tôi ghét mâu thuẫn với một ngôi sao sáng như AM (thực sự, người đàn ông, bạn đã cho tôi một ** rất nhiều thông tin trong những năm qua) - nó sống trong lịch sử lệnh của bạn và trình bày một nguy cơ bảo mật. – gomad

Trả lời

47

fab -h sẽ cho bạn thấy tất cả các tùy chọn, bạn cũng có thể đọc chúng here.

Đặc biệt, và tôi trích dẫn,

PASSWORD -p, --password = PASSWORD

Sets env.password vào chuỗi nhất định; sau đó nó sẽ được sử dụng làm mật khẩu mặc định khi thực hiện kết nối SSH hoặc gọi chương trình sudo.

52

Tôi biết bạn đã hỏi về mật khẩu nhưng sẽ không tốt hơn khi định cấu hình hệ thống để bạn có thể làm vải (tức là SSH) không có mật khẩu?

Đối với điều này, trên máy tính địa phương làm:

  1. ssh-keygen và đồng ý với tất cả các giá trị mặc định (nếu bạn không có lý do làm khác)
  2. cat ~/.ssh/id_rsa.pub và sao chép rằng chìa khóa

Trên máy tính từ xa :

  1. mkdir ~/.ssh && chmod 700 ~/.ssh
  2. touch ~/.ssh/authorized_keys2 && chmod 600 ~/.ssh/authorized_keys2
  3. Dán sao chép chìa khóa vào authorized_keys2

Từ bây giờ máy từ xa của bạn “tin tưởng” máy tính cục bộ của bạn và cho phép đăng nhập nó vào mà không cần mật khẩu. Tiện dụng.

+2

Tôi đã phải chạy 'chmod 700 ~/.ssh' để làm cho nó hoạt động –

+6

sử dụng ssh-copy-id có thể nhanh hơn: ' 'ssh-copy-id'' Cách sử dụng:/usr/bin/ssh-copy -id [-i [identity_file]] [user @] máy – HVNSweeting

+0

+1 cho ssh-copy-id. Khéo léo! – dennis

6

Một cách để làm điều này mà không cần đặt mật khẩu trong danh sách quá trình (các lệnh hiển thị trong ps aux) là để đặt nó trong fabfile.py như vậy:

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

Đặt rằng trước khi bất cứ điều gì mà đi với hệ thống từ xa và nó sẽ không hỏi mật khẩu nữa.

+0

Chỉ cần một lưu ý, điều này tạo ra một lỗi trong Fabric 1.5.3 và Paramiko 1.9.0 mới nhất. –

+0

Chỉ cần xóa 'từ nhập khẩu vải env' – Crazenezz

+1

Gói mới là context_managers,' từ fabric.context_managers import env' –

47

Bạn cũng có thể đặt mật khẩu trên cơ sở mỗi máy chủ. Đó là không rõ ràng đối với tôi, vì vậy ở đây nó đi cho bất cứ ai tìm kiếm này:

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

cache Vải sử dụng mật khẩu có trong từ điển env.passwords. Nó đặt bộ nhớ cache này bằng cách sử dụng chuỗi máy chủ đầy đủ làm khóa của từ điển đó và mật khẩu làm giá trị. Nếu bạn tự thiết lập từ điển này trước khi thực hiện bất kỳ tác vụ nào, Fabric sẽ không hỏi gì cả.

+0

cảm ơn rất lớn cho câu trả lời này – qre0ct

8

Chỉ cần thêm cho bất kỳ ai leo lên đây từ tìm kiếm, bạn có thể chỉ định tùy chọn -I khi chạy fab để nó nhắc bạn nhập mật khẩu mặc định để sử dụng.Bằng cách này, nó sẽ không được hiển thị trong lịch sử lệnh của bạn

dụ:

$ fab -I my_task 
Initial value for env.password: 
Các vấn đề liên quan