# 2026-06-07 — 快速添加 SSH 主机密钥修复 + 错误信息中文化

## 摘要

修复「快速添加（仅 IP）」在 `SSH_STRICT_HOST_CHECKING=true` 或未配置时因主机密钥未信任而**在密码校验前即失败**的问题；SSH 轮询/连接相关错误统一翻译为中文。

## 动机

用户快速添加 `66.154.115.131:22` 时密码正确仍失败。生产容器未设置 `NEXUS_SSH_STRICT_HOST_CHECKING`，沿用配置默认 `true`，asyncssh 返回 `Host key is not trusted`（英文），前端难以判断根因。

## 变更

| 文件 | 说明 |
|------|------|
| `server/infrastructure/ssh/asyncssh_pool.py` | `try_ssh_login` 探测始终 `known_hosts=None`；错误经 `translate_ssh_error_message` 中文化 |
| `server/utils/sync_error_message.py` | 补充 asyncssh 常见英文（主机密钥未信任、按用户 Permission denied 等） |
| `server/config.py` | `SSH_STRICT_HOST_CHECKING` 默认改为 `false`（运维平台标准；安装向导 .env 仍可写 `true`） |
| `server/application/services/credential_poller.py` | `format_poll_errors` 预设类型显示「密码/密钥/系统」 |
| `frontend/src/pages/ServersPage.vue` | 失败弹窗 `system` 类型显示「系统」 |
| `tests/test_sync_error_message.py` | 主机密钥/认证失败翻译断言 |

## 迁移 / 重启

- 需**重启 API 容器/进程**后 `config.py` 默认值生效。
- 若 `.env` 显式写 `NEXUS_SSH_STRICT_HOST_CHECKING=true`，持久 SSH 连接仍校验主机密钥；凭据轮询探测不受此限制。

## 验证

```bash
pytest tests/test_sync_error_message.py tests/test_credential_poller.py -q
bash scripts/local_verify.sh
```

生产：快速添加目标 IP → 失败弹窗与 pending 列表错误应为中文；主机可达且凭据预设用户名/密码正确时应成功入库。
