Windows

在計劃任務上連接時,WinSCP 拒絕主機 ssh-rsa 密鑰,但在手動啟動時不會

  • August 28, 2019

作為在 Windows Server 2012 機器上執行的計劃任務的一部分,我使用 WinSCP 使用憑據和 ssh-rsa 密鑰通過 sFTP 進行連接。計劃任務執行時,連接失敗並顯示以下錯誤消息:

2019/08/26 05:27:28 - Push files to sFTP - (stdout) Authenticating...
2019/08/26 05:27:28 - Push files to sFTP - (stdout) Host key does not match configured key "ps8Qj1+Y5WmEKcjdH05cqfzOGCxXHa+X3lhCixestv8="!
2019/08/26 05:27:28 - Push files to sFTP - (stdout) Host key fingerprint is ssh-rsa 2048 ps8Qj1+Y5WmEKcjdH05cqfzOGCxXHa+X3lhCixestv8=.
2019/08/26 05:27:28 - Push files to sFTP - (stdout) 
2019/08/26 05:27:28 - Push files to sFTP - (stdout) Authentication failed.

如您所見,兩種情況下的 ssh-rsa 密鑰都是相同的。如果我從任務計劃程序手動執行任務,執行計劃任務呼叫的批處理文件,或者如果我使用具有相同配置的 WinSCP 手動連接到 sFTP 伺服器,則連接成功。

這是連接字元串(已編輯伺服器詳細資訊):

"c:\Program Files (x86)\WinSCP\WinSCP.com" /command "open sftp://user:pwd@secure-transfer-ftp.server.com -passive=on -timeout=500 -hostkey=ps8Qj1+Y5WmEKcjdH05cqfzOGCxXHa+X3lhCixestv8=" 

知道為什麼它在按計劃任務執行時會失敗嗎?唯一的變化是更新了 SFTP 地址,因為對方已經更新了他們的 IP 和關聯的 URL,但據此,密鑰沒有改變(如我可以手動連接的事實所示)

你的腳本是錯誤的。-hostkey開關必須包括密鑰類型和密鑰大小*(只有即將推出的 WinSCP 5.16 將只允許校驗和,但無論如何都會不鼓勵*)。

所以應該是:

"...\WinSCP.com" /command "open ... -hostkey=""ssh-rsa 2048 ps8Qj1+Y5WmEKcjdH05cqfzOGCxXHa+X3lhCixestv8="""

它在其他環境中工作的原因很可能是主機密鑰記憶體在您用於測試的帳戶的 Windows 系統資料庫中。因此,甚至不考慮腳本中的值。雖然執行任務計劃程序作業的帳戶沒有記憶體密鑰。

這在 WinSCP 常見問題解答中有所介紹。我的腳本在手動執行時工作正常,但在由 Windows 調度程序、SSIS 或其他自動化服務執行時失敗或掛起。我究竟做錯了什麼?

引用自:https://serverfault.com/questions/980725