Mac 免密码连接与部署 WZ ETF 博客
给 Mac 上的本人或 Codex:请先完整阅读本文,再配置 SSH 或部署。首次安装 Mac 公钥时需要输入一次服务器密码;此后日常连接和部署不再需要密码。
服务器信息与安全边界
- 博客域名:
https://wzetf.cn - 唯一允许操作的服务器:
47.102.143.59 - SSH 用户:
blogadmin - SSH 别名:
wzetf-blog - 网站目录:
/var/www/quarto-site - 已验证的服务器 ED25519 主机指纹:
SHA256:92QH+XI3z0g+x8Z5SA8zooabbJ97exRiKvJB8Y2BtzY - 不要操作另一台 ETF App 服务器:
43.161.227.156 - 不要在服务器安装 Quarto、Ghost、Node.js 或 MySQL。
- Quarto 在 Mac 本地渲染,服务器只通过 Nginx 提供
_site静态文件。
一、在 Mac 上创建独立密钥
打开“终端”,执行:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/wzetf_blog_ed25519 -C "wzetf-blog-mac"出现密钥口令提示时,如果希望以后完全自动部署,连续按两次 Enter,使用空口令。
不要把私钥 ~/.ssh/wzetf_blog_ed25519 发给任何人,也不要上传到 OneDrive、GitHub 或博客目录。
二、把 Mac 公钥安装到服务器
执行:
cat ~/.ssh/wzetf_blog_ed25519.pub | ssh blogadmin@47.102.143.59 'umask 077; mkdir -p ~/.ssh; touch ~/.ssh/authorized_keys; cat >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'首次连接会显示服务器指纹。只有当 ED25519 指纹与下面完全一致时,才输入 yes:
SHA256:92QH+XI3z0g+x8Z5SA8zooabbJ97exRiKvJB8Y2BtzY
随后输入一次 blogadmin 的服务器密码。输入密码时终端不会显示字符,这是正常现象。
三、配置 SSH 别名
执行:
nano ~/.ssh/config保留文件中已有内容,在末尾加入:
Host wzetf-blog
HostName 47.102.143.59
User blogadmin
Port 22
IdentityFile ~/.ssh/wzetf_blog_ed25519
IdentitiesOnly yes
StrictHostKeyChecking yes
ServerAliveInterval 60
ServerAliveCountMax 3
按 Control + O 保存,按 Enter 确认,再按 Control + X 退出。然后执行:
chmod 600 ~/.ssh/config四、验证免密码连接
执行:
ssh -o BatchMode=yes wzetf-blog 'printf "USER=%s\nHOST=%s\n" "$(whoami)" "$(hostname)"; test -w /var/www/quarto-site && echo SITE_WRITABLE=yes'正确结果应包含:
USER=blogadmin
HOST=iZuf6giekp8l32s44zcgwdZ
SITE_WRITABLE=yes
如果命令要求密码或显示 Permission denied,不要部署,先检查密钥与 ~/.ssh/config。
五、准备 Mac 的部署工具
本项目已有 deploy.ps1,它会在本地渲染、检查 SSH、上传网站,并保留服务器的 .well-known 证书验证目录。
先检查:
quarto check
pwsh --version如果缺少 Quarto 或 PowerShell 7,并且已经安装 Homebrew,可执行:
brew install --cask quarto
brew install --cask powershell安装后关闭并重新打开终端,再次运行检查命令。
六、部署前演练
在终端进入博客项目根目录。该目录必须包含 _quarto.yml 和 deploy.ps1。
执行:
pwsh -File ./deploy.ps1 -DryRun预期最后显示“演练完成,没有修改服务器”。如果演练失败,不要执行正式部署。
七、正式上传
确认本地预览内容无误后执行:
pwsh -File ./deploy.ps1成功时会显示:
DEPLOY_OK
部署成功。
然后打开:
https://wzetf.cn/https://www.wzetf.cn/
如果浏览器仍显示旧内容,使用 Command + Shift + R 强制刷新。
日常工作顺序
- 修改
.qmd、_quarto.yml或styles.css源文件。 - 本地运行
quarto preview检查页面。 - 运行
pwsh -File ./deploy.ps1 -DryRun。 - 明确确认要发布后,再运行
pwsh -File ./deploy.ps1。 - 打开 HTTPS 网站核对结果。
不要直接修改 _site 内的 HTML,因为下次 Quarto 渲染会覆盖它们。日常部署不需要手动登录服务器,也不需要 sudo 密码;只有修改 Nginx、安装服务器软件或调整系统服务时才需要 sudo。