Windows OpenSSH访问UNC路径仅获只读权限问题求助
Windows SSH会话无法写入已挂载的Samba/Linux共享驱动器
问题描述
我有一台Windows AWS实例,可访问并挂载Samba/Linux共享网络驱动器。RDP登录时,不管是资源管理器还是PowerShell,都能正常访问路径、挂载驱动器、创建文件夹和文件;但通过SSH远程登录后,只能访问路径、挂载驱动器、枚举文件夹及读取文件,执行mkdir/Set-Content/New-Item等创建操作时会提示访问路径被拒绝。就连通过SSH运行的第三方应用(比如Perforce同步)调用C++ Windows API做同类操作,也会出现mkdir错误。
已尝试的排查步骤
- 排查过映射驱动器会话特定的问题,搜索结果大多指向这个方向,但没解决
- 在RDP的PowerShell里完全复现不了这个问题
- 验证过挂载驱动器的账号确实有读写权限
- 已经在Windows凭据管理器里存储了驱动器的凭据
- 尝试把UNC路径挂载到盘符后,操作还是只读
- 设置过
EnableLinkedConnections注册表项
解决方案尝试
- 修改SSH服务的登录身份
默认Windows的OpenSSH Server服务是以Local System账户运行的,这个账户没法访问用户级别的网络凭据和映射驱动器。可以把服务的登录身份改成你用来RDP的用户账户:
- 打开服务管理器,找到「OpenSSH SSH Server」
- 右键→属性→登录选项卡,选择「此账户」,输入你的RDP用户名和密码,重启服务
- 重新通过SSH登录,再尝试挂载共享并执行写入操作
- 在SSH会话里显式用带凭据的命令挂载
哪怕凭据已经存在于凭据管理器,SSH会话可能读不到,你可以在SSH的PowerShell里重新挂载并指定凭据:
$cred = Get-Credential New-PSDrive -Name Z -PSProvider FileSystem -Root "\\server\share" -Credential $cred -Persist
注意:-Persist参数只在PowerShell 5.1及以上版本有效,而且需要以管理员身份执行
- 检查SMB共享的权限配置
要确保Samba/Linux共享的权限不仅包含用户的读写权限,还要检查:
- 如果是Windows共享:确认NTFS权限里用户账户对共享根目录及子目录有写入权限,没有继承限制
- 如果是Samba共享:检查Linux文件系统的权限(比如
chmod/chown设置),确保对应的用户或组有写入权限
- 禁用UAC远程限制
如果你的用户账户是管理员,UAC的远程限制可能导致权限不足,可以修改注册表:
- 打开
regedit,导航到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System - 创建或修改DWORD值
LocalAccountTokenFilterPolicy,设置为1 - 重启机器后再测试
内容的提问来源于stack exchange,提问作者David Clyde
相关产品推荐
相关产品推荐

