# Win11/10访问Samba共享和VSCode SSH访问解决方案 ## 问题描述 Docker安装的HomeAssistant使用Samba共享配置目录,但Win11/10有时无法正常访问无密码的Samba共享。 ## 解决方案 ### 方案一:修复Win11/10 Samba访问问题 #### 1. 启用SMB1.0协议(不推荐,安全性较低) ```powershell # 以管理员身份运行PowerShell Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol ``` #### 2. 修改本地安全策略(推荐) 1. 按 `Win+R` 打开运行对话框,输入 `gpedit.msc` 2. 导航到:`计算机配置 > Windows设置 > 安全设置 > 本地策略 > 安全选项` 3. 找到并修改以下策略: - `网络安全: LAN Manager身份验证级别` 设置为 `发送LM和NTLM响应` - `网络安全: 对于NTLM SSP(包括安全RPC)的最小会话安全` 设置为 `无要求` #### 3. 修改注册表(高级用户) ```cmd # 以管理员身份运行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 错误](http://datacdn.data-it.tech/HomeAssistant/docs/medias/FixWindowsSmbaErrror.mp4) [修复Windows SMB 错误脚本下载地址](http://datacdn.data-it.tech/HomeAssistant/tools/fixwindows.ps1): ``` 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 ``` 2. 将脚本保存到本地(如c盘的根目录) 2. 右键点击脚本,选择"使用PowerShell运行" 3. 选择"以管理员身份运行" ``` # 如果提示禁止运行脚本,请先执行如下指令后,再以管理员身份运行 Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process #然后再运行脚本 .\fixwindows.ps1 ``` 4. 按提示输入服务器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,执行: ```cmd net use \\你的服务器IP\HAConfig "" /user:"" ``` **方法D:修改Windows本地组策略** 1. 运行 `gpedit.msc` 2. 导航到:`计算机配置 > Windows设置 > 安全设置 > 本地策略 > 安全选项` 3. 修改:`网络安全: 对匿名SID/名称翻译的限制` 设置为 `无` 4. 修改:`网络访问: 不允许SAM账户的匿名枚举` 设置为 `已禁用` ### 方案二:使用VSCode SSH访问HomeAssistant挂载目录 #### 1. 确保SSH服务运行 在HomeAssistant主机上确保SSH服务已启动: ```bash # 检查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. 添加以下配置: ```ssh 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` ### 网络连通性测试 ```bash # 测试端口连通性 telnet 服务器IP 445 # Samba telnet 服务器IP 22 # SSH ``` ***重要提醒*** ***任何对HomeAssistant中的配置文件的更改,都需要重启HomeAssistant才能生效。***