psftp 显示“服务器的主机密钥未缓存在注册表中”

cur*_*cab 4 ssh powershell sftp psftp

尝试使用以下命令从 PowerShell 连接到 SFTP 服务器时,我收到以下消息psftp:

错误:

psftp.exe :服务器的主机密钥未缓存在注册表中。您无法保证服务器就是您认为的计算机。
服务器的rsa2密钥指纹为:ssh-rsa 2048 41289438190410491
连接被放弃。

PowerShell 脚本:

$Username = "Username"
$Password = "Password"

psftp.exe sftpserver -l $Username -pw $Password -batch -bc -b C:\batch\download.bat
Run Code Online (Sandbox Code Playgroud)

(psftp.exe 存储在 c:\windows\system32 中)

我之前已经通过 PuTTY 和 WinSCP 从该服务器 SSH 到该服务器,没有出现任何问题。但是,通过 PowerShell 运行时它不会连接。

Mar*_*ryl 5

该消息不是错误。

每个SSH/SFTP客户端都需要验证服务器的主机密钥。

甚至 PuTTY 和 WinSCP 也要求您在第一次连接到服务器时确认主机密钥。

尽管 PuTTY 和 psftp 共享主机密钥缓存。您确定您在同一台计算机上使用相同的本地 Windows 帐户使用 PuTTY 吗?

无论如何,要么:

  • 无需开关即可运行 psftp 一次-batch。检查主机密钥并确认您是否信任它。psftp 将缓存主机密钥并从现在开始工作。
  • 或者将-hostkey带有可信主机密钥指纹的开关添加到psftpPowerShell 脚本中的命令中。

另请参阅对 psftp 主机密钥提示响应 y(es)(尽管 @vmitchell85 的最高得分答案是错误的,但请参阅@GerriePretorius 的答案)。