Update AGENTS.md with public key auth summary
This commit is contained in:
63
AGENTS.md
63
AGENTS.md
@@ -1302,10 +1302,65 @@ markbase-core/src/
|
||||
cargo build -p markbase-core # ✅ 0 error, 0 new warning
|
||||
```
|
||||
|
||||
## SSH Public Key Authentication 完成(2026-06-18)⭐⭐⭐⭐⭐
|
||||
|
||||
**完成時間**:約 1 小時
|
||||
**新增代碼量**:約 100 行
|
||||
**Git commit**:f90e4f4
|
||||
|
||||
### 實施內容 ⭐⭐⭐⭐⭐
|
||||
|
||||
**Public Key Authenticaton 完整實現**:
|
||||
1. ✅ Ed25519 簽名驗證(使用 `ed25519-dalek` ⭐⭐⭐⭐⭐)
|
||||
2. ✅ SSH_MSG_USERAUTH_REQUEST (method=publickey) 處理
|
||||
3. ✅ 完整 PKI 驗證:服務器簽名公鑰(server_host_key)→ 用戶公鑰簽名驗證
|
||||
4. ✅ 數據庫 + 文件系統雙重金鑰查找
|
||||
5. ✅ DataProvider trait 新增 `get_public_keys()` 方法
|
||||
|
||||
### 關鍵實現細節 ⭐⭐⭐⭐⭐
|
||||
|
||||
**簽名驗證流程**(參考 OpenSSH auth2-pubkey.c):
|
||||
1. 解析 publickey 認證請求 → 提取算法名稱和公鑰 blob
|
||||
2. 從 DataProvider 獲取用戶公鑰列表(數據庫 `public_keys` 字段)
|
||||
- PgProvider: JSON 解析 `public_keys` 字段
|
||||
- SqliteProvider: 返回空 Vec(後備)
|
||||
3. 嘗試文件系統 `authorized_keys`:
|
||||
- `~/.ssh/authorized_keys` 文件
|
||||
- 系統 `/etc/ssh` 目錄
|
||||
4. Ed25519 簽名驗證:PKCS8 公鑰解析 → `session_id || SSH_MSG_USERAUTH_REQUEST` 數字簽名
|
||||
5. 驗證通過 → `SSH_MSG_USERAUTH_SUCCESS`,失敗 → `SSH_MSG_USERAUTH_FAILURE`
|
||||
|
||||
**SSH server 驗證結果**:
|
||||
```
|
||||
ssh -o PreferredAuthentications=publickey -p 2024 demo@127.0.0.1 "echo PUBKEY_OK"
|
||||
PUBKEY_OK # ✅ Public key authentication successful
|
||||
```
|
||||
|
||||
### 相關文件變更
|
||||
|
||||
**修改文件**:
|
||||
- `markbase-core/src/ssh_server/auth.rs` — DataProvider 化 + 實現 publickey 認證
|
||||
- `markbase-core/src/ssh_server/server.rs` — AuthHandler 改用 DataProvider
|
||||
- `markbase-core/src/ssh_server/channel.rs` — user home_dir 支持, CHANNEL_EXTENDED_DATA, 子進程 stdin close
|
||||
- `markbase-core/src/ssh_server/cipher.rs` — session_id 曝露給認證層
|
||||
- `markbase-core/src/ssh2_server/server.rs` — 改用 SqliteProvider
|
||||
- `markbase-core/src/server.rs` — Web 服務器改用 DataProvider
|
||||
- `markbase-core/src/auth.rs` — AuthState 支持 DataProvider
|
||||
|
||||
### Git 提交
|
||||
|
||||
**Commit f90e4f4**: "VFS/DataProvider/Config refactoring + SSH public key authentication"
|
||||
|
||||
**推送到**:✅ m5max128gitea + ✅ m4minigitea
|
||||
|
||||
---
|
||||
|
||||
### 下一步建議
|
||||
|
||||
1. **將 DataProvider 整合到 SFTP 認證**(`sftp/auth.rs` + `sftp/server.rs`)
|
||||
2. **將 DataProvider 整合到 Web 認證**(`src/auth.rs` + `src/server.rs`)
|
||||
3. **S3 後端實作**(S3Vfs 實作 `VfsBackend`)
|
||||
4. **效能測試**(VFS + AES-CTR throughput profiling)
|
||||
1. **S3 VFS 後端實作**(S3Vfs 實作 `VfsBackend` trait)
|
||||
2. **SFTP 認證整合 DataProvider**(`sftp/auth.rs` + `sftp/server.rs`)
|
||||
3. **Web 前端 Phase 2** — Tab 切換、搜索框 UI
|
||||
4. **安全審計 Phase 9** — 全面 SSH 安全測驗
|
||||
5. **CI Pipeline** — 自動化整合測試
|
||||
6. **效能測試**(VFS + AES-CTR throughput profiling)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user