使用带有PLink的echo y的VBA Excel代码

时间:2015-09-01 15:29:44

标签: excel vba plink

警告:**如果您使用的是不受信任的设备/ IP,请确保您不要使用此方法。您不希望自动缓存Ssh主机密钥这是你不知道的。要小心。

我的代码的目的是从VBA Excel中为plink.exe运行ssh,以获取给定的IP列表。我只是检查SSH连接,IP列表是动态的。

我正在尝试使用y运行ssh时传递plink.exey的原因是因为第一次PLink(PuTTY)要求缓存IP。

Echo y从命令提示符处自动执行此操作并运行正常,如下所示。

C:\>echo y | Users\Admin\Desktop\plink.exe -ssh 10.0.0.1

该命令通过y并缓存IP,这使我的代码自动化,代码循环遍历整个列表。

我无法在VBA excel中执行相同的命令(这是工具所在的位置),并且需要有关如何实现它的指导。请告诉我出错的地方。

Dim strShellCommand As String
Dim filename As String
Dim Run As String
Dim a As String
Dim b As String

filename = Sheet1.Cells(8, 2).Value
a = "echo y |"
b = "-ssh"

' Comments!!
' filename from cell = "C:\Users\Admin\Desktop\plink.exe"
' echo y | C:\Users\Admin\Desktop\plink.exe -ssh 10.0.0.1
' strCompaddress is any IP

Run = a & " " & filename & " " & b & " " & strCompAddress

Set osh = CreateObject("Wscript.Shell")
Set oEx = osh.Exec(Run)

1 个答案:

答案 0 :(得分:0)

请勿尝试绕过SSH主机密钥的验证。它有by purpose for your own security

  

这是SSH协议的一项功能。它旨在保护您免受称为欺骗的网络攻击:秘密地将您的连接重定向到另一台计算机,以便您将密码发送到错误的计算机。使用此技术,攻击者将能够学习保护您的登录帐户的密码,然后可以像他们一样登录并将该帐户用于自己的目的。

使用-hostkey开关来提供预期主机密钥的指纹。

  

3.8.3.20 -hostkey:手动指定预期的主机密钥

     

此选项通过告知PuTTY正常的主机密钥来覆盖PuTTY的正常SSH主机密钥缓存策略,如果注册表中的正常自动主机密钥存储不可用,这将非常有用。此选项的参数应该是主机密钥指纹或SSH-2公钥blob。有关详细信息,请参阅section 4.20.2

     

如果要配置多个要接受的密钥,可以多次指定此选项。

请注意,PuTTY / PLink 0.64中引入了-hostkey开关。

如果您使用代码测试连接,为什么需要接受主机密钥?服务器能够呈现主机密钥这一事实证明了连接性。

如果你真的使用你的代码来缓存主机密钥,那么"他们没有点击“是”'对于每个要缓存它的IP," 不要。这绝对是不可接受的。不仅是你打破了自己的安全。您故意破坏其他用户的安全性,这些用户会在不知情的情况下信任您盲目接受的任何主机密钥。

预缓存主机密钥的唯一正确方法是将已知主机密钥导入注册表。

亲自验证(我的意思是)主机密钥从您的注册表导出到SshHostKeys.reg这样的文件:

[HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys]
"rsa2@22:example.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"

并将它们导入目标计算机。

例如使用:

reg import SshHostKeys.reg

如果您确实不关心安全性,例如因为您要在专用网络中进行连接,请使用:

Run = Environ("COMSPEC") & " /c echo y | " & filename & " -ssh " & strCompAddress

(假设plink.exefilename的路径

要使输入重定向工作,您必须通过shell解释器(cmd.exe)运行该过程。环境变量COMSPEC指向它(通常为C:\WINDOWS\system32\cmd.exe)。

另见Redirecting input to an executable from Excel VBA