我想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()
它将显示如下内容:
有什么方法可以在使用
echo "y"
时自动(非交互式)Start-Process
吗?还是禁用Windows的SSH主机检查(对我来说更好)?任何帮助表示赞赏。
最佳答案
不要尝试对pscp
主机密钥验证提示盲目回答“y”。您失去了对man-in-the-middle attacks的保护。
您应该将 -hostkey
switch与主机密钥指纹一起使用。
主机密钥是有关任何SSH服务器的信息的一部分,包括凭据。 –尽管这是一种折衷,但您可能希望实现等效的OpenSSH accept-new
模式。有关示例,请参见WinSCP文章Implementing SSH host key cache (known hosts)。 –如果使用"MD5"
而不是"SHA-256"
,您将获得几乎与pscp
所需格式相同的指纹。