salt-api在使用時,有些坑欲哭無淚,一路趟雷事後,總結了一趟salt-pai使用填坑指南,保君一路暢通。python
#本文的安裝版本 2018.3.2-1.el6 yum install salt-api.noarch
centos 6json
checkconfig salt-api on service salt-api start
centos 7centos
systemctl enable salt-api.service systemctl start salt-api
cd /etc/salt/master.d/ vi api.conf
內網不安全,須要使用祕鑰加密,請問度娘api
rest_tornado: port: 8888 #ssl_crt: /etc/pki/tls/certs/localhost.crt #ssl_key: /etc/pki/tls/private/localhost_nopass.key debug: True disable_ssl: True rest_cherrypy: port: 8889 #ssl_crt: /etc/pki/tls/certs/localhost.crt #ssl_key: /etc/pki/tls/private/localhost_nopass.key debug: True disable_ssl: True
vi eauth.conf
external_auth: pam: saltapi: - .* - '@runner' - '@wheel'
pam 表示salt-api的驗證採用Linux系統自帶的pam驗證,就是基於Linux用戶的驗證方式安全
saltapi 這個是Linux用戶,因此salt-api就能夠基於Linux用戶密碼進行驗證app
useradd saltapi passwd saltapi
注意暫時不要設置saltapi用戶爲nologin,否則你會後悔的
saltapi用戶密碼用 saltapipw 指代less
service salt-api restart
curl -si http://salt-api-ip:8888/login \ -H "Accept: application/json" \ -d username='saltapi' \ -d password='saltapipw' \ -d eauth='pam'
返回 json 包含 tonken 則正常python2.7
首先su驗證下用戶輸入密碼是否正確curl
#su - saltapi Account locked due to 66 failed logins # less /var/log/secure python2.7: pam_tally2(login:auth): user saltapi (7006) tally 62, deny 5
發現用戶居然被鎖ide
#查看用戶登陸狀態 #pam_tally2 --user=saltapi Login Failures Latest failure From saltapi 66 09/30/18 11:02:01 pts/1
重置帳戶登陸失敗計數
#pam_tally2 --user=saltapi --reset #pam_tally2 --user=saltapi Login Failures Latest failure From saltapi 0
從新請求salt-api正常,可是幾回後仍是被鎖
臨時解決方法,取消pam_tally2驗證
vi /etc/pam.d/system-auth #註釋 auth required pam_tally2.so onerr=fail deny=5 unlock_time=1800
#能夠在root用戶下執行 salt -T -a pam 'minion_id' test.ping #注意,若是驗證經過,就會生成~/salt_token 文件,裏面記錄驗證用戶的tonken,若是過時或者從新驗證,須要刪除這個文件