Linux Token Auth 一次性密碼認證

1. 什麼是Token

Token(令牌)是一個身份認證標識,token還有一個特色,那就是存在過時時間的。也就是令牌不是長久有效的。git

2. 爲何使用令牌

咱們一般須要臨時或者一次性使用的身份認證github

3. 何時能用到令牌技術

例如咱們去餐廳就餐,向前臺獲取Wifi密碼,而後能夠享受30分鐘的上網服務。30分鐘事後密碼將失效。算法

咱們公司有不少服務器,密碼的管理很是麻煩,有時還會有人事變更,一旦人員發生變更,全部的服務器密碼都須要修改一次,很是麻煩,偶爾會有漏改狀況,使用堡壘機能夠更好的管理密碼,但成本很是昂貴。shell

因而我便想起了Token技術,但購買Token硬件成本也要花費很多錢。Token的原理我很清楚,經過對稱算法算出相同對等密鑰,咱們能夠不購買硬件設備,本身開發,手機設備隨身攜帶,因此開發移動版Token最好不過。安全

4. 本文的Token應用在什麼地方

我採用Token技術實現Linux指定用戶的密碼週期變化,以時間爲基準,手機同步算出服務器上的密碼。爲了防止密碼被窮舉,我增長了4個干擾字符。bash

若是對密碼算法強度感到不安全,你能夠自行修改複雜度。服務器

你還能夠遠程修改密碼,很少講。dom

5. 誰來部署

首先由管理員部署密碼修改程序 chpasswd.sh 而後加入到crontab 中定時運行。因爲考慮到讀者的水平良莠不齊,因此我使用shell完成,這樣絕大多數讀者都能看懂。ide

# cat chpasswd.sh     #!/bin/bash  datetime=`date +%Y-%m-%d" "%H":"%M`  email="neo.chan@live.com" #password=$(cat /dev/urandom | tr -cd [:alnum:] | fold -w30 | head -n 1)  string=$(date -u "+%Y$1%m$2%d$3%H$4%M")  password=$(echo $string | md5sum | cut -c 2-9 | base64 | tr -d "=" | cut -c 1-32)  echo $password > ~/.lastpasswd  echo $password | passwd www --stdin > /dev/null

~/.lastpasswd 中保存最後一次密碼spa

crontab 設置,每分鐘修改一次密碼。

# crontab -l  */1 * * * * /root/chpasswd.sh a b c d

a b c d 自行設定,設定與手機端相同便可

至此服務器端配置完成

6. 手機端配置

安裝Token.apk文件到你的手機

https://github.com/oscm/Token

 

6.1. 設置密碼

確認密碼

選擇環境

設置干擾碼

6.2. 查看服務器密碼

6.3. 設置刷新時間

默認1分鐘刷新一次,可能沒有來得及輸入完密碼就會更新密碼

若是修改此項,服務器端crontab中的設置同步更改便可。

原文連接:http://my.oschina.net/neochen/blog/297712

相關文章
相關標籤/搜索