# 2026-06-01 远程写入 SFTP 权限回退 SSH tee/mv

## 摘要

解决编辑器保存时报 `SFTP 写入失败: Permission denied`：在 SFTP 无文件写权限但目录可写（或需 sudo）时，自动回退 SSH `tee`、临时文件 `mv` 覆盖、以及 `sudo -n`。

## 动机

许多生产文件属主为 root、权限 644，SFTP 无法直接 `open(wb)`，但目录可写时可通过 `mv` 替换；部分环境需免密 sudo。

## 涉及文件

| 文件 | 变更 |
|------|------|
| `server/infrastructure/ssh/asyncssh_pool.py` | `remote_write_bytes()` |
| `server/api/sync_v2.py` | upload / write-file 使用统一写入 |

## 迁移 / 重启

`supervisorctl restart nexus`

## 验证方式

1. 编辑 root 属主且目录可写的配置文件 → 保存成功。
2. 若仍失败，在目标机为 SSH 用户配置对该路径的写权限或 `NOPASSWD: /usr/bin/tee, /usr/bin/mv`。

## 补充（同日）

- SSH `tee` 回退时 `conn.run(input=bytes)` 需 `encoding=None`，否则报 `utf_8_encode() argument 1 must be str, not bytes`。
