如何将“ y”传递给以PowerShell Start-Process启动的pscp进程?

问题描述 投票:1回答:1

我想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\* [email protected]:/home/corey/' -Wait" -PassThru
$proc.WaitForExit()

它将显示如下内容:

服务器的主机密钥未缓存在注册表中。你没有确保服务器是您认为的计算机。的服务器的ssh密钥指纹为:xxxxxx如果您信任此主机,请输入“ y”将密钥添加到PuTTY的高速缓存中并进行连接...将密钥存储在缓存中? (是/否)

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

任何帮助都值得赞赏。

powershell ssh ssh-keys start-process pscp
1个回答
1
投票

请勿尝试对pscp主机密钥验证提示盲目回答“ y”。您失去了针对man-in-the-middle attacks的保护。

您应将-hostkey switch与主机密钥指纹一起使用。


主机密钥是您应该拥有的有关任何SSH服务器的信息的一部分,以及凭据。 –尽管有所妥协,但您可能希望实现等效的OpenSSH -hostkey模式。有关示例,请参见WinSCP文章accept-new。 –如果使用Implementing SSH host key cache (known hosts)而不是"MD5",则将以"SHA-256"所需的格式获取指纹。

© www.soinside.com 2019 - 2024. All rights reserved.