编辑 | blame | 历史 | 原始文档

Win11/10访问Samba共享和VSCode SSH访问解决方案

问题描述

Docker安装的HomeAssistant使用Samba共享配置目录,但Win11/10有时无法正常访问无密码的Samba共享。

解决方案

方案一:修复Win11/10 Samba访问问题

1. 启用SMB1.0协议(不推荐,安全性较低)

# 以管理员身份运行PowerShell
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

2. 修改本地安全策略(推荐)

  1. Win+R 打开运行对话框,输入 gpedit.msc
  2. 导航到:计算机配置 > Windows设置 > 安全设置 > 本地策略 > 安全选项
  3. 找到并修改以下策略:
  • 网络安全: LAN Manager身份验证级别 设置为 发送LM和NTLM响应
  • 网络安全: 对于NTLM SSP(包括安全RPC)的最小会话安全 设置为 无要求

3. 修改注册表(高级用户)

# 以管理员身份运行cmd
reg add HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters /v RequireSecuritySignature /t REG_DWORD /d 0 /f
reg add HKLM\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters /v RequireSecuritySignature /t REG_DWORD /d 0 /f
reg add HKLM\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters /v EnableSecuritySignature /t REG_DWORD /d 0 /f

4. 添加网络凭据

  1. 打开 控制面板 > 用户账户 > 凭据管理器
  2. 选择 Windows凭据
  3. 点击 添加Windows凭据
  4. 输入:
  • 互联网或网络地址:\\你的服务器IP
  • 用户名:留空或输入 guest
  • 密码:留空

5. 使用Windows客户端强制无密码访问(推荐解决方案)

由于compose-all.yaml文件不能修改,我们通过Windows客户端配置来解决访问问题:

方法A:自动修复脚本(最推荐)
我们提供了一个PowerShell自动修复脚本,可以一键完成所有配置:

观看视频:修复 Windows SMB 错误

修复Windows SMB 错误脚本下载地址

http://datacdn.data-it.tech/HomeAssistant/tools/fixwindows.ps1

  1. 下载脚本文件 fixwindows.ps1
curl -o fixwindows.ps1 http://datacdn.data-it.tech/HomeAssistant/tools/fixwindows.ps1    
  1. 将脚本保存到本地(如c盘的根目录)

  2. 右键点击脚本,选择"使用PowerShell运行"

  3. 选择"以管理员身份运行"

# 如果提示禁止运行脚本,请先执行如下指令后,再以管理员身份运行
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
#然后再运行脚本
.\fixwindows.ps1
  1. 按提示输入服务器IP地址

使用方法:
```powershell

方式1:直接运行(交互式输入IP)

.\fixwindows.ps1

方式2:带参数运行

.\fixwindows.ps1 -ServerIP "192.168.1.100"

方式3:完整参数

.\fixwindows.ps1 -ServerIP "192.168.1.100" -ShareName "HAConfig" -DriveLetter "Z"
```

脚本功能:

  • 自动修改注册表设置
  • 调整Windows安全策略
  • 建立Samba连接并映射驱动器
  • 测试连接状态
  • 可选创建桌面快捷方式

方法B:通过映射网络驱动器

  1. 打开文件资源管理器
  2. 右键点击"此电脑",选择"映射网络驱动器"
  3. 驱动器选择一个可用盘符(如Z:)
  4. 文件夹输入:\\你的服务器IP\HAConfig
  5. 取消勾选"登录时重新连接"
  6. 点击"使用其他凭据连接"
  7. 用户名留空或输入guest,密码留空
  8. 勾选"记住我的凭据"

方法C:通过命令行强制连接

以管理员身份运行cmd,执行:

net use \\你的服务器IP\HAConfig "" /user:""

方法D:修改Windows本地组策略

  1. 运行 gpedit.msc
  2. 导航到:计算机配置 > Windows设置 > 安全设置 > 本地策略 > 安全选项
  3. 修改:网络安全: 对匿名SID/名称翻译的限制 设置为
  4. 修改:网络访问: 不允许SAM账户的匿名枚举 设置为 已禁用

方案二:使用VSCode SSH访问HomeAssistant挂载目录

1. 确保SSH服务运行

在HomeAssistant主机上确保SSH服务已启动:

# 检查SSH服务状态
sudo systemctl status ssh

# 如果未启动,启用并启动SSH
sudo systemctl enable ssh
sudo systemctl start ssh

2. 安装VSCode扩展

在VSCode中安装以下扩展:
- Remote - SSH
- Remote - SSH: Editing Configuration Files

3. 配置SSH连接

  1. Ctrl+Shift+P 打开命令面板
  2. 输入 Remote-SSH: Connect to Host
  3. 选择 Configure SSH Hosts
  4. 选择配置文件(通常是 C:\Users\用户名\.ssh\config
  5. 添加以下配置:
Host homeassistant
    HostName 你的HomeAssistant服务器IP
    User dtuser
    Port 22

4. 连接到服务器

  1. 在VSCode中按 Ctrl+Shift+P
  2. 输入 Remote-SSH: Connect to Host
  3. 选择 homeassistant
  4. 输入服务器密码进行登录
  5. 连接成功后,打开文件夹:/home/dtuser/opt/ha/config

方案三:使用SFTP客户端

如果VSCode SSH有问题,可以使用SFTP客户端:

  • WinSCP:图形界面SFTP客户端
  • FileZilla:支持SFTP协议
  • PuTTY + PSFTP:命令行工具

连接信息:

  • 协议:SFTP
  • 主机:你的服务器IP
  • 端口:22
  • 用户名:dtuser
  • 密码:(你的服务器密码)

推荐方案

最佳实践组合

  1. 使用自动修复脚本(方案一第5点方法A)- 最简单高效
  2. 配置VSCode SSH访问作为备用方案(方案二)

这样既不需要修改compose文件,又提供了自动化和手动的多种访问方式。

故障排除

Samba访问问题

  • 检查防火墙是否阻止了445和139端口
  • 确认服务器IP地址正确
  • 尝试重启Samba容器:docker restart samba

SSH访问问题

  • 检查SSH服务状态:sudo systemctl status ssh
  • 确认防火墙允许22端口
  • 检查SSH密钥权限:chmod 600 ~/.ssh/id_rsa

网络连通性测试

# 测试端口连通性
telnet 服务器IP 445  # Samba
telnet 服务器IP 22   # SSH

重要提醒

任何对HomeAssistant中的配置文件的更改,都需要重启HomeAssistant才能生效。