【问题标题】:Password encryption using SecureString for plink.exe command使用 SecureString 对 plink.exe 命令进行密码加密
【发布时间】:2013-01-27 03:23:51
【问题描述】:

我想在 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

但它不起作用......

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

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

有什么想法吗?

【问题讨论】:

  • 为什么要交出一个“加密”的密码来 plink? plink 不是 putty ssh 客户端实现的一部分吗?距离我上次使用 MS Windows 已经有 10 年了,但我想我记得-pw 选项接受密码,而不是加密密码。
  • 这个脚本供个人使用,将在我家人的不同计算机上,如果打开脚本,我不希望他们知道我的 NAS 密码。ps1... PS:我知道计算机和用户必须相同的加密/解密,我会在每个计算机/用户上做这个过程我不知道我是否做得好。事实上,我想在没有可见密码的情况下在 powershell 脚本中使用plink.exe root@192.168.x.y -pw $pwdNAS df...
  • 抱歉,尝试以这种方式保护您的凭据是行不通的。您正在做的是混淆,而不是加密。
  • 是的,对不起,最后,我想做的是混淆......
  • 显然以这种方式保护密码是错误的做法。考虑为此目的使用密钥而不是密码。为每个系统/用户/客户使用不同的密钥。这样您的密码就不会被泄露。并且不要在远程访问中使用root 帐户,实际上强烈建议您禁用通过 ssh 的 root 登录。

标签: powershell password-encryption plink securestring


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    但是,有一种方法可以将安全字符串转换为明文字符串,详细 here. 请注意:a)只有在同一个用户帐户同时加密和解密安全字符串时它才会起作用,并且 b)它不是很大安全。

    【讨论】:

      【解决方案3】:

      解密见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 
      

      虽然按照其他答案的建议,您最好使用公钥身份验证。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-02
        • 1970-01-01
        • 2016-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多