过夜方便,不代表远程登录已经收紧
把 Claude Code 挂在常开的新加坡 Mac mini 上过夜,用远程组网或 SSH 早上接回去看进度,是很多人已经在用的工作流。笔记本可以合盖,重构与测试继续在远端跑。
社区里也有人提醒:远程 SSH、过夜自动化相关的风险正在被重新讨论。你不必恐慌,但也不要把「我能连上」当成「登录面已经审计过」。常见疏忽包括:
- 仍开着密码登录,或
authorized_keys里留着旧笔记本、临时协作者的公钥。 - 习惯性打开 SSH Agent Forwarding,密钥相当于「跟着会话走」。
- 多个 tmux / 多个 Claude 会话共用同一套宽松环境,出错时分不清谁改了什么。
- 只关心 Claude 的权限弹窗,却从没看过本机 SSH 实际加载了什么。
本文把「接回方便」和「登录面收紧」拆开:先在整机独享的新加坡 Mac mini 上做一轮可复现的 SSH 审计,再挂过夜任务。Claude 账号由你自己开通;机器提供的是稳定合规的使用环境。
第一步:分清三条通道
过夜场景里通常有三条互不替代的通道:
- SSH:改配置、进入 tmux、看日志、跑
claude命令行。 - UU 远程连接或桌面通道:需要 GUI、批准偶发权限、用桌面版 Claude 时。
- Claude Code 进程本身:在 tmux 里跑的长会话,不负责「你怎么登录这台机器」。
审计对象是前两条的登录与会话边界。目标很具体:只有你的密钥能进 SSH;长任务跑在可命名、可重连的会话里;不把本机 SSH agent 无必要地转发给每一次远程会话。
第二步:只读摸清当前 SSH 状态
用你平时过夜用的同一条链路登入新加坡 Mac mini:
whoami
ls -ld ~ ~/.ssh ~/.ssh/authorized_keys 2>/dev/null
lsof -nP -iTCP -sTCP:LISTEN | grep -i ssh || true
ssh -G localhost 2>/dev/null | egrep -i '^(port|pubkeyauthentication|passwordauthentication|kbdinteractiveauthentication|forwardagent|gatewayports|x11forwarding) ' || true
若看得到系统配置文件,再补:
test -f /etc/ssh/sshd_config && egrep -n '^(#)?(PasswordAuthentication|PubkeyAuthentication|PermitEmptyPasswords|AllowUsers|AuthorizedKeysFile|AllowAgentForwarding|X11Forwarding|ClientAliveInterval|ClientAliveCountMax)' /etc/ssh/sshd_config || true
把输出记在本机笔记(不要贴进公开聊天),并回答:是不是主要靠公钥?authorized_keys 每一行还认识吗?Agent Forwarding / X11 是否开着且真的需要?SSH 断了之后 Claude 是否还在 tmux 里?
第三步:清理 authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys 2>/dev/null || cat ~/.ssh/authorized_keys
- 删:对不上设备、注释空白且来源不明、临时用过的密钥。
- 留:当前笔记本与备用机;每条最好有可读注释。
- 权限:家目录与
.ssh过宽时,OpenSSH 可能忽略密钥文件;保持仅本人可写是常见期望。
改完后先从另一台仍应能登录的设备测一次,再撤淘汰密钥,避免把自己锁在门外。系统「远程登录」若支持指定用户,优先收窄到你自己的账号。
第四步:关掉图省事的转发
SSH Agent Forwarding(ForwardAgent)让远端临时借用笔记本密钥去拉私有仓库,短时排障可以,过夜长会话不适合当默认。
在笔记本上检查:
grep -nE 'ForwardAgent|Host ' ~/.ssh/config 2>/dev/null | head -40
建议默认 ForwardAgent no;仅对某个 Host 或单次 -A 临时打开。在 Mac mini 上拉私有代码,优先用只部署在这台机器上的 deploy key / 机器身份。过夜 Claude Code 一般不需要经 SSH 转桌面协议;桌面需求走 UU 远程连接即可。
第五步:空闲断开与进程保活拆开
SSH 断了不等于 Claude 死了——前提是长任务在 tmux 里:
tmux has-session -t claude-night 2>/dev/null || tmux new -d -s claude-night
tmux attach -t claude-night
服务端可按需配置客户端保活,避免 NAT 静默丢连接;同时接受「SSH 会断、tmux 不断」是正常分工。过夜前再确认:机器不会因休眠冻住进程;Claude Code 的权限规则已挡住无人值守不该自动放行的写操作;进度有文件或 git 可接力。
第六步:十分钟验收清单
- [ ]
ssh-keygen -lf ~/.ssh/authorized_keys每一行都能说出设备 - [ ] 密码登录若仍开启,确认是有意保留;否则改为仅密钥
- [ ] 客户端默认
ForwardAgent no;无永久-A别名 - [ ]
tmux ls看得到过夜会话;故意断 SSH 再 attach,进程仍在 - [ ] UU 远程连接与 SSH 都能进同一台整机
- [ ] 不把私钥或
authorized_keys全文贴进公开渠道
结果可写进本机 docs/remote-login-audit.md(只写结论与日期,不写密钥材料)。
和 Claude Code 怎么拼
推荐顺序:先审计登录面 → 再在 tmux 挂长任务 → 配好权限规则与 hook → 早上 SSH attach 看日志,需要 GUI 时再用 UU 远程连接。终端版适合脚本与 SSH,桌面版利于看视觉 diff;两边可以都用,但权威运行环境只放一台新加坡 Mac mini,避免状态分叉。
为什么放在新加坡的常开 Mac mini 上做
- 登录面与任务面同机:密钥、tmux、Claude 会话在同一台整机,审计一次就能覆盖过夜路径。
- 整机独享:
authorized_keys与本地 deploy key 不与其他客户混用;退租抹机时登录面一并结束。 - 真 macOS 工具链:过夜跑的也是同一套 Darwin 环境,减少「云里一套、本地一套」丢上下文。
- 远程可接回:SSH 管命令行,UU 远程连接管桌面确认;实际延迟取决于你本地的网络线路。
Zumac.Ai 提供位于新加坡的实体 Mac mini M6,整机独享,支持 SSH 与 UU 远程连接,FileVault 全盘加密,退租时抹机重装。新客户整机租用 ¥999/月起,季付 ¥2,697.30,半年付 6 送 1 为 ¥5,994,年付 12 送 2 为 ¥11,988;已购买客户续费保持原价。新客户首单自审核开通当天起租,续费及老客户新订单自付款当天起租。建议先租一个月,把「SSH 审计 → tmux 过夜 → 早上接回」跑通。
小结
- 过夜跑 Claude Code 前先审计远程登录,不要默认「能连上就安全」。
- 清理
authorized_keys,优先密钥登录,默认关闭 Agent Forwarding。 - SSH 负责接回,tmux 负责保活;登录审计不能替代权限规则。
- 把权威环境固定在新加坡常开 Mac mini,比多台设备各自敞着远程入口更可控。
