启动与系统组件

排查常见 SFTP 问题 - Windows Server

· 52CE 我爱测

Windows 上的 OpenSSH 提供安全文件传输协议(SFTP)功能。 本文介绍如何解决使用 SFTP 和 OpenSSH 管理 Windows Server 和 Windows 客户端时可能会遇到的最常见问题。 最佳做法和其他资源 - 使用最新支持的 OpenSSH 版本。 - 避免将 OpenSSH 配置为对 chroot 目录使用网络共享。 - 每次更改 OpenSSH 服务器配置时,都会通过运行 sshd -t来验证更改。 - 开始故障排除时

Windows 上的 OpenSSH 提供安全文件传输协议(SFTP)功能。 本文介绍如何解决使用 SFTP 和 OpenSSH 管理 Windows Server 和 Windows 客户端时可能会遇到的最常见问题。

最佳做法和其他资源

  • 使用最新支持的 OpenSSH 版本。
  • 避免将 OpenSSH 配置为对 chroot 目录使用网络共享。
  • 每次更改 OpenSSH 服务器配置时,都会通过运行 sshd -t来验证更改。
  • 开始故障排除时,请检查事件查看器中是否有相关事件。

有关如何在 Windows 和 Windows Server 上配置 OpenSSH 的详细信息,请参阅以下文章:

如何启用 SFTP 日志记录

若要为 OpenSSH 服务器服务启用 SFTP 日志记录,请修改sshd_config文件,然后重启 OpenSSH 服务器服务。 执行以下步骤:

  1. 使用管理员级帐户打开文本编辑器,然后打开 %ProgramData%\ssh\sshd_config。 “日志记录”部分的默认文本应类似于以下摘录:

    # Logging
    #SyslogFacility AUTH
    #LogLevel INFO
    
  2. 若要启用 SFTP 日志记录,请编辑文本,使其类似于以下摘录:

    # Logging
    SyslogFacility LOCAL0
    LogLevel DEBUG3
    

    此外,请添加(或修改)以下文本:

    Subsystem sftp sftp-server.exe -f LOCAL0 -l DEBUG3
    
  3. 保存并关闭sshd_config文件。

  4. 若要重启 OpenSSH 服务器服务,请打开 Windows 命令提示符窗口,然后运行以下命令:

    NET STOP "OpenSSH SSH Server" && NET START "OpenSSH SSH Server"
    

服务重启后,它会在 %ProgramData%\ssh\logs 中生成 SFTP 日志数据。 有关 OpenSSH 日志记录的详细信息,请参阅 如何启用 OpenSSH 详细日志记录。

Windows 和 Windows Server 上的常见 SFTP 问题

SFTP 用户进入了错误的目录或到了 chroot 环境之外

正确配置后,chroot 目录会将用户限制为特定的目录树。 此限制可防止用户访问文件系统的其余部分。

检查以下设置:

  • 在sshd_config文件中,确保 ChrootDirectory 指向本地目录,并且不使用 UNC 路径。

  • 确保 SYSTEM/Administrators 对 chroot 目录具有所有者权限。

  • 确保每个用户在 chroot 目录中具有可写目录,并且该目录具有正确的权限。 保护 /.ssh/authorized_keys 文件。

    注释

    若要验证并修复 NTFS 权限,请在管理命令提示符窗口中使用 icacls 命令。

  • 在 sshd_config 文件中,使用 ForceCommand internal-sftp 和 -d 开关以及 Subsystem sftp sftp-server.exe 命令一起设置上传目录。 可以使用这些设置在 Match 块中指定用户。

特定用户无法使用 SFTP 或收到“拒绝访问”错误

此行为指示所有权或权限问题。 检查以下设置:

  • 确保 SYSTEM/Administrators 对 chroot 目录具有所有者权限。

  • 确保每个用户在 chroot 目录中具有可写目录,并且该目录具有正确的权限。 保护 /.ssh/authorized_keys 文件。

    注释

    若要验证并修复 NTFS 权限,请在管理命令提示符窗口中使用 icacls 命令。

用户无法登录或收到“身份验证失败”或“服务器拒绝我们的密钥”

此行为指示公钥或密码问题。 检查以下配置:

  • 使用 C:\ProgramData\ssh\administrators_authorized_keys 存储密钥,并使用 icacles 检查文件和文件夹权限。

  • 如果服务器拒绝密钥,请将以下行添加到sshd_config:

    PubkeyAcceptedKeyTypes +ssh-rsa
    HostKeyAlgorithms +ssh-rsa
    

    注释

    进行这些更改后,请重启 OpenSSH 服务器服务。

OpenSSH 服务器服务未启动,或 SFTP 连接挂起

若要解决这些问题,请尝试以下作:

  • 若要验证sshd_config设置,请运行sshd -t命令。
  • 查看事件查看器中是否有任何相关事件。
  • 若要检查和修复 chroot 目录树上的访问控制列表(ACL),请运行以下命令 icacles 。
  • 查看 sshd_config 设置。 确保条目没有任何尾随空格,并确保 Subsystem sftp sftp-server.exe 命令存在。

如果这些作都无法解决问题,请卸载并重新安装 OpenSSH 服务器。

SFTP 日志缺失或不完整

查看ssdh_config中的日志设置。 SFTP 日志数据存储在 %ProgramData%\ssh\logs 中。

若要检查和修复日志文件夹中的 ACL,请运行以下命令 icacles 。

用户无法上传或下载文件

  • 在sshd_config文件中,确保 ChrootDirectory 指向本地目录,并且不使用 UNC 路径。
  • 确保 SYSTEM/Administrators 对 chroot 目录具有所有者权限。
  • 确保每个用户在 chroot 目录中具有可写目录,并且该目录具有正确的权限。 运行 icacles 命令以检查和修复 ACL。
  • 确保用户对 chroot 目录没有编写器权限。

资料来源与适用范围

资料来源
微软官方中文故障文档
适用范围
适用于 Windows 的 OpenSSH 入门(/zh-cn/windows-server/administration/openssh/opensshinstallfirstuse)
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。