2013-02-11 4 views
1

Я хотел бы, чтобы зашифровать пароль в PowerShellПароль шифрования с использованием SecureString для plink.exe команды

Я попытался это:

В 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 [email protected] -pw $pwdNAS df 

Но это не сработает ...

Я попытался с учетными данными, но это не кажется, лучше ...

(Мой пароль не имеет никакого пространства или акцентированный характер)

Любую идею?

+1

Почему вы хотите передать «зашифрованный» пароль для подключения? Разве не является частью реализации клиента-шпателя ssh? Прошло около 10 лет с тех пор, как я в последний раз использовал MS-окна, но я думаю, что я помню, что опция '-pw' принимает пароль, а не зашифрованный пароль. – arkascha

+0

Этот скрипт для личного использования будет в разных компьютерах для всей моей семьи, я не хочу, чтобы они знали пароль моего NAS, если открыть скрипт.ps1 ... PS: Я знаю, что компьютер и пользователь должен быть одинаковым для шифрования/дешифрования, я сделаю этот процесс на каждом компьютере/пользователе. Я не знаю, хорошо ли я это сделаю. На самом деле я хочу использовать 'plink.exe [email protected] -pw $ pwdNAS df' в Powershell скрипт без моего видимого пароля ... – jgoup

+0

Извините, но пытается защитить свои учетные данные, которые выиграли путь» т работы. То, что вы делаете, - это обфускация, а не шифрование. – arkascha

ответ

1

Конечно, это не сработает. plink ожидает пароль (cleartext) для опции -pw, а не объекта SecureString. Если вы хотите избежать паролей с открытым текстом в ваших сценариях: используйте проверку подлинности с открытым ключом. Если вы не хотите, чтобы другие люди знали ваш пароль (или ключ): дайте им свою собственную учетную запись и пароль/ключ.

+0

Хорошо, моя ошибка, спасибо за это разъяснение – jgoup

0

Для подключения через ssh вам гораздо лучше использовать ключ, созданный PuttyGen или другим инструментом генерации ключей.

Однако существует способ преобразования защищенных строк в строки открытого текста, подробно here. Имейте в виду, что: а) он будет работать только в том случае, если одна и та же учетная запись пользователя шифрует и расшифровывает защищенную строку, и b) она не очень безопасна ,

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 

Хотя, как было предложено другие ответы, то лучше использовать открытый ключ аутентификации.

Смежные вопросы