Windows上的SSH无需清除密码

时间:2013-09-11 14:44:07

标签: ssh credentials putty

我要做的是在Windows上使用Putty(或其他解决方案)连接到SAN交换机并使用ssh获取命令的结果。

我使用Powershell作为脚本语言,可以轻松完成,但我不想在脚本中保存密码。

我正在寻找从命令行使用 Putty 的解决方案,并在脚本中设置未以明文形式存储的密码。

我认为用\RUNAS启动脚本(通过计划任务)并将实际凭证直接传递给Putty。 (该开关将与Runas使用的帐户具有相同的密码)。这可能吗?

或者是否有任何解决方案使用带有证书的putty或类似的东西?

4 个答案:

答案 0 :(得分:4)

您可能需要考虑使用密钥身份验证而不是密码。

人们会说除了密钥之外还要使用密码,但是如果您的替代方法是将密码存储在PC上的文件中,那么任何有权访问您机器的人都拥有您。所以您只需要生成按键。要求是:没有人,但您可以访问该密钥文件。

http://www.linuxproblem.org/art_9.html

我在同一条船上,不得不使用Windows,但对我来说www.mingw.org它提供了一个shell,以及基本的* nix工具 - 对SSH非常有用,可以连接到远程Linux VPS等。 .Cygwin,当然是类似的,并且有一个更简单的工具(如果我记得的话,setup.exe)来安装新的应用程序。我实际上使用git-bash与git的mingw。无图形用户界面。当我需要使用ssh openssl cut awk等时,我发现这很容易掉到mingw shell。

所以使用SSH从命令行运行任何远程命令,而不使用像Putty这样的第三方程序,或者那些带有GUI等的程序。在远程设备上的ssh中使用密钥验证和offing密码验证(至少在设备上)您有控制权的地方)是远程设备的一些额外锁定,特别是如果您是唯一需要访问它的人。

离开,安排脚本。应该有办法通过批处理文件和Windows或在命令行环境中执行此操作。

答案 1 :(得分:2)

我会建议以下选项:

  1. 使用密码验证。将带有密码的文本文件存储在具有有限访问权限的文件(某个服务帐户)中,并使用此帐户的凭据启动脚本
  2. 与上述相同,但不是文本文件使用证书文件
  3. 编写一个小程序(C#),使用DPAPI将证书或密码存储在特定于服务帐户的商店中。
  4. 将上述任何内容与BitLocker / EFS
  5. 结合使用

    没有任何选项可以保护您免受具有管理员访问权限的攻击者的攻击,但实施这些选项会使那些试图破解它的人感到头疼(按数量顺序)。

    但无论如何,剧本将是一个弱点。

答案 2 :(得分:2)

这可能不是您正在寻找的答案,但我不会使用Putty,而是宁愿使用SSH.NET library直接与SSH服务器通信。它以源代码和二进制形式提供,如果您愿意,也可以从PowerShell中使用它。

示例:http://sshnet.codeplex.com/wikipage?title=Draft%20for%20Documentation%20page

然后您将lot of options安全地存储您的登录凭据。

答案 3 :(得分:1)

我建议您在必须与之通信的ssh机器上设置双因素身份验证,如果您无法使用密钥身份验证。

谷歌的2因素身份验证可以为ssh实现,只要SE Linux被禁用就相对容易设置...如果没有禁用,你可以添加一个例外,这实际上有助于降低风险妥协并提高安全性。