Y云儿 2021-01-07 16:18 采纳率: 100%
浏览 24
已结题

(防火墙开启下)两台服务器之间使用Xcopy命令报错

【批处理】【共享文件夹端口】两台服务器,A服务器上创建的共享文件夹B服务器访问报错,本地通过Xcopy命令能正常访问A服务器,并下载

如题,且A、B两台服务器均为Windows Server 2012R2 standard x64,属于同一内网,均在防火墙的入栈规则里开放了135-139,445端口,均启用了文件和打印机共享。

本地Win10 x64,防火墙未作设置,文件和打印机共享未开启。

 

本地 使用以下脚本可以顺利将 服务器 桌面123文件夹下所有数据Xcopy到本地

但将脚本复制到B服务器上执行,报以下错误

尝试将服务器B的防火墙关闭后,可以正常进行复制。

但因为服务器安全考虑,如何在不关闭系统防火墙的情况下实现服务器直接的文件共享呢

 

第一次提问,劳烦大神解惑,不胜感激!

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-24 16:55
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,首先我们需要理解两个关键点:

    1. 允许跨设备共享:防火墙通常会设置权限限制,禁止从某些网络端口向其他网络端口传输数据。我们不能简单地打开防火墙规则,因为我们想要实现文件和打印机共享,这涉及到与用户账户以及共享文件所在的网络环境交互,这可能需要额外的安全措施。

    2. 确保安全连接:确保用户登录成功的本地账户有足够的权限访问和同步文件。如果服务器在客户端(例如电脑或手机)的安全设置中阻止特定用户的远程访问,那么上述脚本可能会引发此错误,因为它们跨越了信任的网络边界。

    以下是一个解决方案示例,演示如何在Windows Server 2012 R2标准版上启用文件和打印机共享,同时限制局域网中的外部用户仅能访问这些共享文件。这个解决方案主要依赖于IIS服务和Windows Management Instrumentation (WMI) API。

    首先,在服务器A的计算机上运行以下命令以安装和服务IIS扩展程序:

    Install-WindowsFeature -Name IIS Web Server, Integrated Pipeline
    

    然后,启动IIS服务并导航到"Web Site"下的"Default Web Site"。 接着,在控制台上选择"New Item",输入"Web Application"名称,并点击"Add"按钮。 配置"Applications"属性时,确保勾选"Use features for this site only"和"Allow remote users to manage site settings"选项,这样就允许用户更改网站设置,包括文件和打印机共享。

    然后,打开IIS管理器并找到共享文件夹“D:\sharebackup”,双击其左侧的“属性”图标。 在“站点属性”窗口中,切换到“IIS Manager”标签页,并在“默认文档”列表中添加包含需要上传的文件的URL,如下所示:

    <http://localhost:8051/SiteCollection/Default.aspx>
    
    <file mapping="C:\Users\Administrator\Desktop\123*" location="/path/to/uploaded/files/" />
    

    注意,这里"~/Desktop/123/" 是本地用户使用 "C:\Users\Administrator\Desktop" 目录路径替换您指定的共享文件夹的地址,"C:\Users\Administrator\Desktop" 是服务器A的当前用户身份所在目录。location 属性指定了文件在服务器上的位置,而 mountPath 属性表示要使用的驱动器计划(Mount Path)。在这里,我们选择了驱动器计划“C:\Windows\System32\drivers\ateq\36”作为外部用户的源驱动器。

    最后,右键单击共享文件夹并选择“Properties”。在“安全”部分,我们可以看到有关用户访问权的设置。我们将禁用对所有来宾(无论其源IP是否是本地主机)的TCP端口(3389)和HTTP端口(80)的远程桌面访问,这样就可以限制外部用户仅能在指定的受保护内部网络区域访问共享文件。

    此外,为了确保安全性,还可以使用SQL Server Management Studio(SSMS)或者第三方工具(如Windows Terminal Emulator)来进行用户帐户管理,为外部用户创建一个与服务器A帐户关联的新用户,并将其添加到应用程序池,以便他们可以在本地运行IIS应用。

    以下是基于以上步骤生成的批处理脚本:

    @echo off
    net use "\\10.9.0.211\Users\Administrator\Desktop" /user:"admin" /d:C:\Windows\System32\drivers\ateq\36 /p:Everyone /v:Everyone /t:Interactive
    net localgroup administrators administrator /add
    net localgroup administrators Admin /add
    net localgroup administrators Administrator /add /user:"admin" /dns:192.168.1.100 /domain:"YourDomain.com"
    net localgroup administrators Admin /add /user:"admin" /dns:192.168.1.200 /domain:"YourSecondDomain.com"
    
    net user Admin %user%\ NT AUTHORITY\Network Service /add
    net user admin %user%\ DC=YourDC,DC=com /add
    net localgroup administrators Admin /add /user:"admin" /dnsservers:192.168.1.100,192.168.1.200 /password:"StrongPassword"
    net localgroup administrators Admin /add /user:"admin" /passowrdless:
    
    icacls c:\users\admin\ DC=YourDC,DC=com /grant administrators:r /R
    icacls c:\users\admin\ administrators /grant administrators:r /R
    icacls c:\users\admin\ administrators /grant administrators:r /L
    
    net start wmi
    

    注意:FilePath::CreateUnixPath() 函数用于将字符串转换为 Unix 驱动器路径,FileCopyEx() 函数用于在 Windows 中执行 XCOPY 命令,icacls 用于修改系统权限,wmi 是 WMI 的 Python 程序接口。

    icacls 功能的使用可能需要根据您所使用的 SQL Server 或第三方工具的API版本进行调整,因为不同的工具可能具有不同的行为方式。

    另外,这个解决方案只覆盖了Windows Server 2012 R2标准版和Server 2012 Standard with Datacenter Edition的服务器实例。在更高版本的操作系统中,如Windows Server 2016 R2及以上,可能需要使用net sharesmbpasswd命令来更新共享权限,或者使用更高级的组策略管理工具(如"Computer Configuration"->"Security Settings"->"Group Policy Objects"->"Windows Firewall"->"Advanced Security Policy")来进行更精细的用户和组管理。

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 专家已采纳回答 7月30日

悬赏问题

  • ¥15 混合键合键合机对准标识
  • ¥100 现在不懂的是如何将当前的相机中的照片,作为纹理贴图,映射到扫描出的模型上
  • ¥15 目标跟踪,计算机视觉
  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败
  • ¥15 复合卡卡号轨道写入芯片卡
  • ¥20 基于MATLAB的TDOA
  • ¥15 为啥输入字体突然变了