我想在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
但它不起作用......
我尝试过凭据,但似乎没有更好......
(我的密码没有任何空格或重音字符)
有什么想法吗?
答案 0 :(得分:1)
当然它不起作用。 plink
期望-pw
选项的(明文)密码,而不是SecureString
对象。如果要在脚本中避免使用明文密码:请使用公钥身份验证。如果您不希望其他人知道您的密码(或密钥):给他们自己的帐户和密码/密钥。
答案 1 :(得分:0)
要通过ssh进行连接,最好使用由PuttyGen或其他密钥生成工具生成的密钥。
但是,有一种方法可以将安全字符串转换为明文字符串,详细here.请注意:a)只有当同一个用户帐户同时加密和解密安全字符串时才会有效,并且b)它是不太安全。
答案 2 :(得分:0)
有关解密,请参阅PowerShell - Decode System.Security.SecureString to readable password:
$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
尽管如其他答案所示,您最好使用公钥身份验证。