两章实战课:第一章用 1.xisi.chat 的真实上线过程讲解「一个网页如何从本地到线上」;第二章拆解远程桌面链路中的三层身份认证。两章都配逐步动画演示。
上一轮「为什么没走 git 开工/收工拉推」的完整答案,就是这条链:先判断任务类型,再决定走 git 开发流水线还是页面直传部署。
.deploy\ 安装器源文件(bat / ps1 / register.sh / README 等)| 域名 / 目录 | 1.xisi.chat → /www/wwwroot/1/ |
| 上传工具 | xisi-ssh.py(paramiko SFTP) |
| 站点配置 | /www/server/panel/vhost/nginx/1.xisi.chat.conf |
| 证书 | Let's Encrypt ECC,acme.sh 自动续期 |
| 验证命令 | curl -w '%{http_code}' http(s)://1.xisi.chat/ |
| 层 | 验证什么 | 机制 | 凭据与位置 | 失败表现 |
|---|---|---|---|---|
| ① 网页认证 | 访问这个域名的人 | HTTP Basic Auth:nginx access_by_lua_block 内置 Base64 解码校验 |
账号 admin / xisi2026(大小写不敏感),存于服务器 nginx 配置 |
页面直接 401,打不开 |
| ② SSH 密钥认证 | 拨号进来的这台电脑 | 非对称加密:客户端私钥签名,服务器用公钥验签 | 私钥在目标电脑 %USERPROFILE%\.xisi-remote\;公钥在服务器 /root/.ssh/authorized_keys |
隧道建不起来,页面一直「连接中」 |
| ③ VNC 桌面认证 | 能否进入这个桌面 | DES 挑战应答:16 字节挑战 → 密码补 0 至 8 字节并位反转作密钥 → 加密响应 | 桌面密码 xisi2026(上限 8 位),存于目标电脑 TightVNC 配置 |
画面出现后提示密码错误 |
浏览器与服务器之间的第一道关卡。没有这道认证,任何人知道域名都能打开登录页发起连接。
access_by_lua_block 内置校验,不走独立的认证服务Authorization: Basic base64(账号:密码)admin / xisi2026,大小写不敏感/websockify:WebSocket 升级请求放行(否则代理建不起来)/.well-known/:Let's Encrypt 证书验证放行| 校验方式 | Base64 解码后比对,Lua 内置 |
| 认证失败响应 | HTTP 401 + WWW-Authenticate: Basic |
| 放行路径 | /websockify、/.well-known/ |
目标电脑开机后主动连接服务器建立反向隧道。服务器必须确认:来的确实是授权过的电脑,而不是随便一台机器在冒充。
%USERPROFILE%\.xisi-remote\| 私钥位置 | xisi_deploy_key 或 id_ed25519_2xisi |
| 公钥位置 | 服务器 /root/.ssh/authorized_keys |
| 未授权行为 | BatchMode=yes 立即失败,不挂起等密码 |
| 隧道保活 | ServerAliveInterval=15 / CountMax=3 |
| 自检命令 | ssh-keygen -y -f <key> 须输出 ssh- 开头 |
ss -tln | grep <TPORT> 无监听即隧道未建;公钥未授权 → 追加到 authorized_keys 后重跑。数据穿过隧道到达目标电脑的 5900 端口后,VNC 协议在显示桌面之前先做一次加密握手,确认操作者知道桌面密码。
1 = OK| 默认桌面密码 | xisi2026(可 -VncPass 指定) |
| 加密算法 | DES-ECB,VNC 位反转密钥 |
| 自检返回 | 端到端认证通过 → PASS |
| 改密方式 | TightVNC 服务配置 GUI 或重跑 MSI Change |