Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services VSTS任务:窗口计算机文件副本:系统错误53_Amazon Web Services_Azure Devops_Azure Pipelines Release Pipeline - Fatal编程技术网

Amazon web services VSTS任务:窗口计算机文件副本:系统错误53

Amazon web services VSTS任务:窗口计算机文件副本:系统错误53,amazon-web-services,azure-devops,azure-pipelines-release-pipeline,Amazon Web Services,Azure Devops,Azure Pipelines Release Pipeline,我正在尝试将VST发布到运行IIS的VM(运行在AWS上)。为此,我使用了三个任务 Windows计算机文件副本 管理IIS应用程序 部署IIS应用程序 在发布之前,我正在运行一个构建管道,它给了我一个包含web应用(webapp.zip)的工件。 当我手动将它放在服务器上时,我可以运行我发布的第2步和第3步,应用程序就可以运行了。我的问题是,我无法让Windows机器文件副本正常工作。它总是抛出一个异常,给出“系统错误53:未找到网络路径”。当然,这些机器没有加入域,因为我在VST上运行我的版

我正在尝试将VST发布到运行IIS的VM(运行在AWS上)。为此,我使用了三个任务

  • Windows计算机文件副本
  • 管理IIS应用程序
  • 部署IIS应用程序
  • 在发布之前,我正在运行一个构建管道,它给了我一个包含web应用(webapp.zip)的工件。 当我手动将它放在服务器上时,我可以运行我发布的第2步和第3步,应用程序就可以运行了。我的问题是,我无法让Windows机器文件副本正常工作。它总是抛出一个异常,给出“系统错误53:未找到网络路径”。当然,这些机器没有加入域,因为我在VST上运行我的版本,需要AWS虚拟机上的文件。我尝试打开端口445(用于文件共享),并确保用户拥有目标计算机上目标路径的权限。
    因此,我的问题是:如果两台机器没有连接,我如何将文件从VST移动到AWS VM。

    Windows File Copy设计用于在同一网络上工作,在internet上启用它将打开您的服务器进行黑客攻击。它是为内部网络设计的。如果管理不当,FTP也会导致重大的安全风险

    最简单的方法是在AWS中要发布到的VM上运行代理。然后,代理将把工件下载到AWS VM,并运行您需要安装的任何任务

    这允许您在本地计算机上运行任务,而不会使其面临安全风险


    如果您需要在AWS中管理多台计算机,您可以轻松创建一个本地网络,允许您的单个代理使用Windows File Copy将文件推送到多个VM,而不会有任何风险。

    免责声明:此答案仅说明如何满足使用Windows Machine File Copy和管理/部署IIS任务。 请始终关注目标主机的安全性,其强化和安全评估是绝对必要的

    如评论中所述,您需要保护部署通道不受外部世界的影响,下面是一个高级示例:


    回答: 要使用,您需要:

    • 在目标计算机(运行IIS的计算机)上,从管理命令提示符下运行以下命令以启用文件和打印机共享:

      netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=yes netsh advfirewall firewall set rule group=“文件和打印机共享”新启用=是
    • 确保在目标机器上安装了PowerShell 4或更高版本;从PS命令提示符执行的以下命令将打印本地计算机上安装的版本:

      PS>$PSVersionTable.PSVersion

      例如,要获得PowerShell 5,您可以安装 ;

    • 在目标计算机上,必须安装.NET Framework 4.5或更高版本
    对于其他两个任务(管理/部署IIS任务),这两个任务都要求您在目标计算机上启用WinRM HTTPS侦听器。对于开发部署场景,您可以遵循以下步骤:

    • 从官方VSTS任务GitHub存储库下载位于的PowerShell脚本

    • 从管理PowerShell命令提示符启用RemoteSigned PowerShell执行策略:

      PS> Set-ExecutionPolicy RemoteSigned PS>设置执行策略RemoteSigned
    • 使用以下参数运行脚本:

      PS> ConfigureWinRM.ps1 FQDN https PS>ConfigureWinRM.ps1 FQDN https
    请注意,FQDN是VSTS任务访问的计算机的完整域名,例如myhostname.domain.example。 还请注意,此脚本从Internet下载两个可执行文件(makecert.exe和winrmconf.cmd),因此此计算机必须具有Internet连接。否则,只需下载这两个文件,将它们放在脚本的同级,从脚本中注释掉下载文件调用

    现在,您已经使用自签名证书启用了WinRM HTTPS侦听器。记住对这两个任务使用“测试证书”选项(讽刺的是,这意味着不测试证书,更好的名称应该是“跳过CA检查”)

    在生产部署场景中,您可能希望使用正确签名的证书。

    使用或步骤/任务


    关于如何创建FTP站点,您可以参考本文:。

    您可以在计算机上安装发布代理,您可以使用FTP复制任务,我尝试打开端口445(用于文件共享)FWIW,我认为SMB通常需要ICMP、UDP 137、138、TCP 139和445。您还可以尝试一个命令行任务,该任务使用MsDeploy的远程部署,即defaultHello提供的TCP 8172。谢谢你的回答。为什么需要PS版本5?Windows机器文件复制任务的基础脚本需要PowerShell版本4,如果您有版本3或更低版本,通常我建议将版本5改为更新的功能。这会不会让internet上的机器面临黑客攻击?我绝对不会在公用盒子上启用此功能。@Hinsh先生我当然愿意纠正任何错误或错误,请您详细说明一下好吗?我确信激活“文件打印机和共享”可能会增加攻击机器的表面,但如果目标是互联网,那么风险总是存在的,没有协议是安全的。在任何情况下,服务器强化和安全评估都是绝对必要的。让我知道,谢谢。这就是为什么VST的构建和发布代理只会拉。他们连接到互联网,这样你就可以拥有一台最小的服务器。没有一个协议是安全的,但是80上的http比文件和打印共享更容易保护。谢谢你的评论。我会尝试一下。这也会增加黑客的表面积。除非你有足够的时间花在安全上,否则不要在公用箱上启用FTP。奇怪的是,他们提供了来自VST的任务。我假设如果您从VSTS运行该任务,它将是较新的 PS> ConfigureWinRM.ps1 FQDN https