一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - PowerShell - PowerShell 腳本中的密碼保存的方法

PowerShell 腳本中的密碼保存的方法

2020-07-09 09:18sparkdev PowerShell

這篇文章主要介紹了PowerShell 腳本中的密碼保存的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

引言

筆者在《PowerShell 遠程執行任務》一文中提到了在腳本中使用用戶名和密碼的基本方式:

$Username = 'xxxx'
$Password = 'yyyy'
$Pass = ConvertTo-SecureString $Password -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$Pass

上面的代碼僅僅是能工作而已,因為在稍有安全性要求的環境中都不會允許明文密碼的出現。本文將介紹在 PowerShell 腳本中如何以比較安全的方式使用密碼。

把密碼轉為 SecureString

先來了解下面兩個概念:

SecureString
Encrypted Standard String

SecureString 是 .net 中的一個類型,它是為了解決安全性而設計出來的一種特殊的字符串類型。比如你使用一個密碼字符串創建 SecureString 對象,你無法通過這個對象還原出原來的密碼字符串,但是卻可以把 SecureString 對象當做密碼使用。
Encrypted Standard String 是指經過加密后的一個字符串。

ConvertTo-SecureString 命令可以通過明文的字符串創建 SecureString 對象:

$SecurePwd = ConvertTo-SecureString "123456" -AsPlainText -Force

然后再使用 $SecurePwd 創建 Credential 等身份信息。這種方式就是筆者在引言部分使用的方法,這是不安全的,因為任何能夠查看腳本的人都能從中找出密碼。

把 SecureString 轉為加密字符串

通過 ConvertFrom-SecureString 命令,我們可以把一個 SecureString 對象轉換成一個 Encrypted Standard String(加密后的一個字符串),然后保存到文件中。在創建 Credential 時直接使用前面保存的文件,從而避免明文密碼在系統中出現。

$SecurePwd = ConvertTo-SecureString "123456" -AsPlainText -Force
ConvertFrom-SecureString $SecurePwd

PowerShell 腳本中的密碼保存的方法

上圖顯示 ConvertFrom-SecureString 命令生成的加密字符串,我們把它保存到文本文件中:

ConvertFrom-SecureString $SecurePwd | Out-File "D:\pwd.txt"

看看內容:

PowerShell 腳本中的密碼保存的方法

好了,接下來就可以直接使用 pwd.txt 文件了。

一種看起來比較正常,也很安全的推薦用法:

 

復制代碼 代碼如下:
Read-Host "Enter Password" -AsSecureString | ConvertFrom-SecureString | Out-File "D:\pwd.txt"

執行這行命令,會要求你輸入密碼:

PowerShell 腳本中的密碼保存的方法

此處使用鍵盤輸入代替了明文的密碼字符串。

介紹了 ConvertFrom-SecureString 命令的用法后就可以介紹 ConvertTo-SecureString 命令的另外一個用法,把加密字符串轉換成 SecureString 對象:

$f = "D:\pwd.txt"
$SecurePwd = Get-Content $f | ConvertTo-SecureString
$SecurePwd.Length

PowerShell 腳本中的密碼保存的方法

這次我們把 pwd.txt 文件中的內容通過 ConvertTo-SecureString 命令重新生成 SecureString 對象。最后通過 Length 屬性檢查了密碼的長度。

下圖概括了本文中主要術語和命令的關系:

PowerShell 腳本中的密碼保存的方法

應用密碼的正確姿勢

下面是在腳本中使用密碼的建議做法:

# 生成并保存密碼文件
Read-Host "Enter Password" -AsSecureString | ConvertFrom-SecureString | Out-File "D:\pwd.txt"
# 使用密碼文件創建 Credential 信息
$f = "D:\pwd.txt"
$Cred = New-Object -TypeName System.Management.Automation.PSCredential `
          -ArgumentList UserName, (Get-Content $f | ConvertTo-SecureString)

這種用法也有不足之處,就是只能在生成 pwd.txt 文件的機器上使用這個文件。如果把它復制到其它的機器上,執行 Get-Content $f | ConvertTo-SecureString 時就會報錯:

PowerShell 腳本中的密碼保存的方法

這是一種安全性限制,如果我們想在其它機器上使用 pwd.txt,就得了解些高級的用法!

高級玩法

ConvertTo-SecureString 和 ConvertFrom-SecureString 命令都支持選項 -Key。在處理密碼時通過使用 Key 選項可以提供額外的安全性,并且允許在不同的環境中使用密碼文件。

先生成 32 位的 Key 并保存在文件 AES.key 中:

$keyFile = "D:\aes.key"
$key = New-Object Byte[] 32
[Security.Cryptography.RNGCryptoServiceProvider]::Create().GetBytes($key)
$key | out-file $keyFile

使用 Key 生成并保存密碼文件:

 

復制代碼 代碼如下:

Read-Host "Enter Password" -AsSecureString | ConvertFrom-SecureString -key $key | Out-File "D:\pwd.txt"

使用密碼文件創建和 Key 文件創建 Credential 信息:

$userName = "YourUserName"
$passwdFile = "D:\pwd.txt"
$keyFile = "D:\aes.key"
$key = Get-Content $keyFile
$Cred = New-Object -TypeName System.Management.Automation.PSCredential `
          -ArgumentList $userName, (Get-Content $passwdFile | ConvertTo-SecureString -Key $key)

通過這種方法,把 pwd.txt 和 aes.key 文件拷貝到其它的機器上也是可以工作的。但是我們需要額外維護一個 key 文件的安全,這一般通過設置文件的訪問權限就可以了。

總結

PowerShell 提供的安全選項使我們可以避免在腳本中直接使用明文的密碼,把密碼加密后保存在文件中的好處是可以通過文件的權限管理進行安全性控制。而使用 Key 選項則可以對上述用例進行擴展,從而支持更多的使用場景。但是帶來的不便是我們需要另外維護一個機密的 Key 文件。從這點也可以看出,所謂的安全性其實是由安全機制和用戶一起來保證的!無論多么安全的機制,在用戶泄露了認證信息的情況下都是沒有意義的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 歪歪私人影院成人毛片 | 91精品国产9l久久久久 | 免费观看a毛片一区二区不卡 | 美女全身无遮挡 | 日本午夜小视频 | 成3d漫二区三区四区 | japanesqirl日本护士 | 91精品国产品国语在线不卡 | 校草让我脱了内裤给全班看 | 成人影音先锋 | 91粉色视频在线导航 | 欧美成人精品福利网站 | 特级老女人淫片高清视频 | 无码人妻视频又大又粗欧美 | 白丝校花被扒开双腿喷水小说 | 国产高清不卡码一区二区三区 | 波多野结衣一区免费作品 | 手机看片日韩1024你懂的首页 | 日本免费观看的视频在线 | 精品亚洲欧美中文字幕在线看 | 四虎成人免费观看在线网址 | 高清一区二区 | 护士被多人调教到失禁h | 草莓视频旧版 | 欧美一级高清免费a | 18国产精品白浆在线观看免费 | 日本漫画工囗全彩内番e绅 日本伦理动漫在线观看 | 出差上的少妇20p | 欧美另类杂交a | 曹逼网站 | 精品一二三区久久AAA片 | 色噜噜亚洲男人的天堂www | 国产精品香蕉夜间视频免费播放 | 国产精品理论片在线观看 | 国产欧美日韩精品一区二区三区 | 无码AV熟妇素人内射V在线 | 按摩椅play啊太快了h | 99久久免费视频 | gogort人体的最新网站 | 欧美精品久久久久久久免费观看 | 国产精品欧美韩国日本久久 |