使用pscp.exe在VBA + Excel中将文件从Windows传输到Unix服务器时获取“服务器的主机密钥未在注册表中缓存”

时间:2017-03-16 18:17:21

标签: vba excel-vba sftp putty excel

我在Excel上编写了VBA代码。我正在尝试使用SFTP和文件pscp.exe将文本文件传输到我的服务器。该文件将不会被传输,并且将显示pscp.exe的窗口。

我将看到以下消息:

  

服务器的主机密钥未缓存在注册表中。您无法保证服务器是您认为的计算机。服务器的rsa2密钥指纹是:ssh-rsa XXXX XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX如果您信任该主机,请输入“ y“将密钥添加到PuTTY的缓存中并继续连接。如果要仅进行一次连接,而不将密钥添加到缓存中,请输入“n”。如果您不信任此主机,请按Return键放弃连接。将密钥存储在缓存中? (Y / N)

我怎么能解决我的问题?

Dim Polku As String
Polku = "/"

Dim Palvelin As String
Palvelin = "grid1.example.xxx"

Dim Kayttajatunnus As String
Kayttajatunnus = "user@example.xxx"

Dim Salasana As String
Salasana = "Password2012"

Dim Tiedosto As String
Tiedosto = "filename.txt"

Dim PolkuOhjelma As String
Dim PolkuTiedosto As String

If Right$(ActiveWorkbook.Path, 1) <> "\" Then
    PolkuOhjelma = ActiveWorkbook.Path & "\pscp.exe"
    PolkuTiedosto = ActiveWorkbook.Path & "\" & Tiedosto
Else
    PolkuOhjelma = ActiveWorkbook.Path & "pscp.exe"
    PolkuTiedosto = ActiveWorkbook.Path & Tiedosto
End If

Dim Siirtokomento As String
Siirtokomento = Chr$(34) & PolkuOhjelma & Chr$(34) & " -sftp -l " & Kayttajatunnus & _
    " -pw " & Salasana & " " & Chr$(34) & PolkuTiedosto & Chr$(34) & " " & _
    Palvelin & ":" & Polku

Debug.Print Siirtokomento

Shell Siirtokomento, vbNormalFocus

1 个答案:

答案 0 :(得分:0)

您应该使用-hostkey switch明确指定可信主机密钥的指纹。

-hostkey XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX