增强 SSH/SFTP 稳定性并完善安全校验与前端交互
This commit is contained in:
46
AGENTS.md
46
AGENTS.md
@@ -157,3 +157,49 @@
|
||||
- Copilot 规则:未发现 `.github/copilot-instructions.md`
|
||||
|
||||
若未来新增上述规则文件,agents 必须先读取并将其视为高优先级约束。
|
||||
|
||||
## 10) 近期修复记录(2026-03-11)
|
||||
|
||||
### 10.1 Docker 启动失败修复
|
||||
|
||||
**问题现象**
|
||||
```text
|
||||
Could not resolve placeholder 'SSHMANAGER_JWT_SECRET'
|
||||
Encryption key must be 32 bytes (256 bits)
|
||||
No qualifying bean of type 'ExecutorService' available: expected single matching bean but found 2
|
||||
```
|
||||
|
||||
**修复措施**
|
||||
1. **`application.yml`** - 为安全配置添加空字符串默认值
|
||||
```yaml
|
||||
sshmanager:
|
||||
encryption-key: ${SSHMANAGER_ENCRYPTION_KEY ""}
|
||||
jwt-secret: ${SSHMANAGER_JWT_SECRET ""}
|
||||
```
|
||||
|
||||
2. **`docker-compose.yml`** - 提供有效的默认密钥(仅用于开发/测试)
|
||||
```yaml
|
||||
environment:
|
||||
- SSHMANAGER_JWT_SECRET=ssh-manager-prod-jwt-secret-20240311
|
||||
- SSHMANAGER_ENCRYPTION_KEY=MLVt7pE35KULIppEiit0doUMvSjozZJ037oNGeXjhVA=
|
||||
```
|
||||
> 注:`MLVt7pE35KULIppEiit0doUMvSjozZJ037oNGeXjhVA=` 是通过 `openssl rand -base64 32` 生成的有效 32 字节 AES-256 密钥
|
||||
|
||||
3. **`TerminalWebSocketHandler.java`** - 解决依赖注入歧义
|
||||
```java
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
|
||||
public TerminalWebSocketHandler(
|
||||
// ... 其他参数
|
||||
@Qualifier("terminalWebSocketExecutor") ExecutorService executor) {
|
||||
}
|
||||
```
|
||||
|
||||
**验证结果**
|
||||
```
|
||||
Started SshManagerApplication in 3.469 seconds (JVM running for 3.836)
|
||||
```
|
||||
|
||||
**注意事项**
|
||||
- **生产环境部署时必须修改** `SSHMANAGER_JWT_SECRET` 和 `SSHMANAGER_ENCRYPTION_KEY`
|
||||
- 建议取消 `docker-compose.yml` 中 `volumes` 注释以持久化 H2 数据库文件
|
||||
|
||||
Reference in New Issue
Block a user