You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过SFTP从Linux向Windows挂载的网络驱动器传输文件

这个场景我之前帮同事处理过,刚好可以给你详细说说可行性和操作步骤:

核心可行性说明

直接用Windows的网络驱动器盘符(比如Z:)是不可行的,原因在于:

  • 网络驱动器是当前Windows用户会话下的映射,而SFTP服务器(比如OpenSSH for Windows)通常以系统账户或独立服务账户运行,这些账户无法直接识别用户映射的驱动器盘符。
  • 正确的做法是使用网络共享的UNC路径(格式为\\服务器名\共享名\文件夹),SFTP服务器能直接解析这个路径,只要服务账户有访问权限。
具体操作步骤

假设你已经在Windows上部署好了SFTP服务器(比如用OpenSSH官方版本),可以按以下步骤操作:

  1. 确认SFTP服务账户的权限

    • 找到Windows上SFTP服务的运行账户(比如OpenSSH的sshd服务默认用Local System),确保这个账户对目标网络共享(UNC路径)有读取+写入权限。
    • 如果共享在域环境中,可能需要把sshd服务改成用有域权限的账户运行,或者在共享端给Windows机器的计算机账户分配权限。
  2. 从Linux连接Windows SFTP服务器
    在Linux终端执行SFTP连接命令:

    sftp windows_username@windows_server_ip
    

    输入密码(或用密钥认证,更安全)后进入SFTP交互会话。

  3. 上传文件到UNC路径
    在SFTP会话中,用put命令上传文件,注意要正确指定UNC路径:

    • 方法一:转义反斜杠(Linux终端里反斜杠需要双重转义)
      put /linux/local/path/yourfile.txt \\\\fileserver\\shared_folder\\target\\yourfile.txt
      
    • 方法二:用正斜杠代替反斜杠(大多数SFTP客户端会自动识别转换)
      put /linux/local/path/yourfile.txt //fileserver/shared_folder/target/yourfile.txt
      
    • 可以先执行ls //fileserver/shared_folder命令验证路径是否可访问,避免上传失败。
额外注意事项
  • 如果遇到路径找不到或权限错误,先在Windows本地用SFTP服务账户登录(比如切换到该账户),手动访问UNC路径确认权限是否正常。
  • 有些SFTP客户端(比如FileZilla)图形界面可以直接输入UNC路径,不需要转义,操作更直观,但命令行下必须注意转义规则。

内容的提问来源于stack exchange,提问作者A B

火山引擎 最新活动