2010-02-26 40 views
33

每次結構運行時,它都會詢問root密碼,它是否可以用於自動化建議。結構密碼

fab staging test 
+0

我會非常仔細地考慮採取任何** **戰略,涉及存儲明文口令之前 - 作爲環境瓦爾,保存在腳本,甚至是在命令行輸入 - 就像我討厭與AM這樣的名人相矛盾(真的,老兄,這些年來你給了我很多**信息) - 它存在於你的指揮歷史中,並且存在安全風險。 – gomad 2013-09-18 08:58:52

回答

47

fab -h會告訴你所有的選項,你也可以閱讀here

特別地,我引用,

-p PASSWORD,--password = PASSWORD

集env.password到給定的字符串; 然後將其作爲默認的 密碼,當SSH連接 或調用sudo程序時。

52

我知道你已經詢問過密碼,但是配置系統不是更好嗎,這樣你就可以在沒有密碼的情況下完成結構(即SSH)嗎?

爲此,在本地機器上做:

  1. ssh-keygen,並與所有默認同意(如果你沒有理由不這樣做)
  2. cat ~/.ssh/id_rsa.pub和複製關鍵

在遠程機器:

  1. mkdir ~/.ssh && chmod 700 ~/.ssh
  2. touch ~/.ssh/authorized_keys2 && chmod 600 ~/.ssh/authorized_keys2
  3. 粘貼複製的鍵值爲authorized_keys2

從現在開始你的遠程機器「信任」本地計算機,並允許在登錄它不需要密碼。便利。要做到這一點,而無需把密碼在進程列表中(命令中的ps aux顯示)

+2

我必須運行'chmod 700〜/ .ssh'才能使用它 – 2011-10-12 10:07:06

+6

使用ssh-copy-id可能會更快: 'ssh-copy-id'' 用法:/ usr/bin/ssh-copy -id [-i [identity_file]] [user @]機器 – HVNSweeting 2013-01-04 10:45:10

+0

對於ssh-copy-id +1。整齊! – dennis 2013-10-30 08:53:57

6

的方法之一是把它放在fabfile.py像這樣:

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

把任何事情之前去到遠程系統,它不會再要求輸入密碼。

+0

請注意,這會在最新的Fabric 1.5.3和Paramiko 1.9.0中產生錯誤。 – 2013-03-01 11:51:54

+0

只需刪除'從織物進口環境' – Crazenezz 2013-08-25 07:59:44

+1

新包是context_managers,'從fabric.context_managers進口環境' – 2013-11-03 13:30:21

47

您也可以在每個主機的基礎上設置密碼。 這不是明顯對我,所以這裏有云爲尋找這樣的:

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

面料緩存應用於env.passwords字典密碼。 它使用完整主機字符串作爲該字典的密鑰並將密碼設置爲值來設置此緩存。 如果您在執行任何任務之前自行設置此字典,Fabric將根本不會請求它們。

+0

非常感謝這個答案 – qre0ct 2017-03-22 13:28:08

8

只要爲搜索引起的任何人添加,您可以在運行fab時指定-I選項,以提示您輸入默認密碼。這樣,它不會在您的命令歷史記錄中看到

例如:

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