如何将 "y" 传递给使用 PowerShell Start-Process 启动的 pscp 进程?

How to pass "y" to pscp process started with PowerShell Start-Process?

我想pscp一些文件从Windows到Linux服务器。以下代码 (PowerShell) 是我正在尝试的。它工作正常,但我需要输入 y,当它试图与远程服务器通信时,导致 Windows.

的主机名未知
$proc = Start-Process powershell.exe -Credential $credential -ArgumentList "Start-Process C:\pscp.exe -Verb RunAs -ArgumentList '-i C:\prikey.ppk D:\temp\* corey@11.22.33.44:/home/corey/' -Wait" -PassThru
$proc.WaitForExit()

它将显示如下内容:

The server's host key is not cached in the registry. You have no guarantee that the server is the computer you think it is. The server's ssh key fingerprint is: xxxxxx If you trust this host, enter "y" to add the key to PuTTY's cache and carry on connecting...... Store key in cache? (y/n)

有什么方法可以在使用 Start-Process 时自动(非交互式)echo "y"?或者禁用 Windows 的 SSH 主机检查(对我来说更好)?

感谢任何帮助。

不要尝试盲目回答 "y" 到 pscp 主机密钥验证提示。您失去了针对 man-in-the-middle attacks.

的保护

您应该使用 -hostkey switch 和您的主机密钥指纹。


主机密钥是您应该拥有的关于任何 SSH 服务器的信息的一部分,连同凭据。 – 尽管作为一种妥协,您可能希望实现等效于 OpenSSH accept-new 模式。有关示例,请参阅 WinSCP 文章 Implementing SSH host key cache (known hosts)。 – 如果您使用 "MD5" 而不是 "SHA-256",您将获得几乎采用 pscp.

所需格式的指纹