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(クリアテキスト)パスワードが必要です。スクリプトでクリアテキストのパスワードを使用しないようにする場合は、公開鍵認証を使用します。他の人に自分のパスワード(またはキー)を知られたくない場合:自分のアカウントとパスワード/キーを他の人に知らせます。-pwSecureString

于 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 に答える