我要做的是在Windows上使用Putty(或其他解决方案)连接到SAN交换机并使用ssh获取命令的结果。
我使用Powershell作为脚本语言,可以轻松完成,但我不想在脚本中保存密码。
我正在寻找从命令行使用 Putty 的解决方案,并在脚本中设置未以明文形式存储的密码。
我认为用\RUNAS
启动脚本(通过计划任务)并将实际凭证直接传递给Putty。 (该开关将与Runas使用的帐户具有相同的密码)。这可能吗?
或者是否有任何解决方案使用带有证书的putty或类似的东西?
答案 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)
我会建议以下选项:
没有任何选项可以保护您免受具有管理员访问权限的攻击者的攻击,但实施这些选项会使那些试图破解它的人感到头疼(按数量顺序)。
但无论如何,剧本将是一个弱点。
答案 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被禁用就相对容易设置...如果没有禁用,你可以添加一个例外,这实际上有助于降低风险妥协并提高安全性。