1

我想在 PowerShell 中加密密码

我试过这个:

在 CLI 中:

Read-Host -prompt "Password ?" -AsSecureString | ConvertFrom-SecureString | out-file "D:\root.pwd"

在我的 script.ps1 中:

$pwsNAS = Get-Content "D:\root.pwd" | ConvertTo-SecureString
plink.exe root@192.168.x.y -pw $pwdNAS df

但它不起作用...

我尝试使用凭据,但似乎并没有更好...

(我的密码没有任何空格或重音字符)

任何想法?

4

3 回答 3

1

当然是行不通的。plink期望选项的(明文)密码-pw,而不是SecureString对象。如果您想避免在脚本中使用明文密码:使用公钥身份验证。如果您不想让其他人知道您的密码(或密钥):给他们自己的帐户和密码/密钥。

于 2013-02-11T22:38:57.337 回答
0

对于通过 ssh 进行连接,最好使用由PuttyGen或其他类似的密钥生成工具生成的密钥。

但是,有一种方法可以将安全字符串转换为纯文本字符串,详见此处。 请注意:a)只有在同一个用户帐户同时加密和解密安全字符串时,它才会起作用,并且 b)它不是非常安全。

于 2013-04-17T08:19:40.823 回答
0

有关解密,请参阅PowerShell - 将 System.Security.SecureString 解码为可读密码

$securePass = Get-Content C:\encrypted_password1.txt
$pass = $securePass | ConvertTo-SecureString

$Ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($pass)
$decrypted = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($Ptr)
[System.Runtime.InteropServices.Marshal]::ZeroFreeCoTaskMemUnicode($Ptr)
plink ... -pw $decrypted 

尽管正如其他答案所建议的那样,您最好使用公钥身份验证。

于 2017-11-09T07:17:38.663 回答