我想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()
它将显示如下内容:
服务器的主机密钥未缓存在注册表中。你没有 确保服务器是您认为的计算机。的 服务器的ssh密钥指纹为:xxxxxx如果您信任此主机,请输入 “ y”将密钥添加到PuTTY的高速缓存中并进行连接... 将密钥存储在缓存中? (是/否)
在使用echo "y"
时,有什么方法可以自动(非交互式)Start-Process
?还是禁用Windows的SSH主机检查(对我来说甚至更好)?
感谢您的帮助。
答案 0 :(得分:1)
请勿尝试对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
所需的格式显示。