Win11/10访问Samba共享和VSCode SSH访问解决方案¶
问题描述¶
Docker安装的HomeAssistant使用Samba共享配置目录,但Win11/10有时无法正常访问无密码的Samba共享。
解决方案¶
方案一:修复Win11/10 Samba访问问题¶
1. 启用SMB1.0协议(不推荐,安全性较低)¶
# 以管理员身份运行PowerShell
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
2. 修改本地安全策略(推荐)¶
- 按
Win+R打开运行对话框,输入gpedit.msc - 导航到:
计算机配置 > Windows设置 > 安全设置 > 本地策略 > 安全选项 - 找到并修改以下策略:
网络安全: 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. 添加网络凭据¶
- 打开
控制面板 > 用户账户 > 凭据管理器 - 选择
Windows凭据 - 点击
添加Windows凭据 - 输入:
- 互联网或网络地址:
\\你的服务器IP - 用户名:留空或输入
guest - 密码:留空
5. 使用Windows客户端强制无密码访问(推荐解决方案)¶
由于compose-all.yaml文件不能修改,我们通过Windows客户端配置来解决访问问题:
方法A:自动修复脚本(最推荐) 我们提供了一个PowerShell自动修复脚本,可以一键完成所有配置:
http://datacdn.data-it.tech/HomeAssistant/tools/fixwindows.ps1
- 下载脚本文件
fixwindows.ps1
curl -o fixwindows.ps1 http://datacdn.data-it.tech/HomeAssistant/tools/fixwindows.ps1
-
将脚本保存到本地(如c盘的根目录)
-
右键点击脚本,选择"使用PowerShell运行"
-
选择"以管理员身份运行"
# 如果提示禁止运行脚本,请先执行如下指令后,再以管理员身份运行
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
#然后再运行脚本
.\fixwindows.ps1
- 按提示输入服务器IP地址
使用方法:
# 方式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:通过映射网络驱动器
- 打开文件资源管理器
- 右键点击"此电脑",选择"映射网络驱动器"
- 驱动器选择一个可用盘符(如Z:)
- 文件夹输入:
\\你的服务器IP\HAConfig - 取消勾选"登录时重新连接"
- 点击"使用其他凭据连接"
- 用户名留空或输入
guest,密码留空 - 勾选"记住我的凭据"
方法C:通过命令行强制连接
以管理员身份运行cmd,执行:
net use \\你的服务器IP\HAConfig "" /user:""
方法D:修改Windows本地组策略
- 运行
gpedit.msc - 导航到:
计算机配置 > Windows设置 > 安全设置 > 本地策略 > 安全选项 - 修改:
网络安全: 对匿名SID/名称翻译的限制设置为无 - 修改:
网络访问: 不允许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连接¶
- 按
Ctrl+Shift+P打开命令面板 - 输入
Remote-SSH: Connect to Host - 选择
Configure SSH Hosts - 选择配置文件(通常是
C:\Users\用户名\.ssh\config) - 添加以下配置:
Host homeassistant
HostName 你的HomeAssistant服务器IP
User dtuser
Port 22
4. 连接到服务器¶
- 在VSCode中按
Ctrl+Shift+P - 输入
Remote-SSH: Connect to Host - 选择
homeassistant - 输入服务器密码进行登录
- 连接成功后,打开文件夹:
/home/dtuser/opt/ha/config
方案三:使用SFTP客户端¶
如果VSCode SSH有问题,可以使用SFTP客户端:
- WinSCP:图形界面SFTP客户端
- FileZilla:支持SFTP协议
- PuTTY + PSFTP:命令行工具
连接信息:
- 协议:SFTP
- 主机:你的服务器IP
- 端口:22
- 用户名:dtuser
- 密码:(你的服务器密码)
推荐方案¶
最佳实践组合:
- 使用自动修复脚本(方案一第5点方法A)- 最简单高效
- 配置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才能生效。