Update AGENTS.md with public key auth summary
Some checks failed
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled

This commit is contained in:
Warren
2026-06-18 23:35:53 +08:00
parent f90e4f496c
commit 69efcdf5c5

View File

@@ -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