核心思路
传统方式:你告诉 AI 密码 → 密码暴露在对话中 → 不安全,下次还忘
Codex 方式:本地生成密钥对 → 公钥放服务器 → 免密连接 → 安全且持久
方式一:手动配置(5 分钟)
第1步:生成密钥对
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
生成两个文件:
| 文件 | 作用 | 放哪 |
|---|---|---|
id_ed25519 | 私钥(钥匙) | 留在本机,不要给任何人 |
id_ed25519.pub | 公钥(锁) | 放到服务器上 |
第2步:公钥上传到服务器
登录服务器后执行:
mkdir -p ~/.ssh
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
第3步:配置 SSH 别名
编辑 ~/.ssh/config,添加:
Host myserver
HostName 123.45.67.89
User root
IdentityFile ~/.ssh/id_ed25519
第4步:验证
ssh myserver
能免密登录就成功了 ✅
方式二:让 AI 帮你配(1 句话)
嫌手动麻烦?直接跟 Codex 说:
帮我在 Codex 上添加对这个服务器的连接,别名叫 myserver
AI 会自动完成:生成密钥 → 上传公钥 → 配置别名 → 验证连接。
连上之后怎么用?
配置一次,永久使用。在任何新对话中都能直接操作服务器:
| 你想做的 | 跟 Codex 说 |
|---|---|
| 检查服务状态 | SSH 到 myserver,检查 nginx 状态 |
| 部署项目 | 把当前项目部署到 myserver 的 /var/www/ 目录下 |
| 查看日志 | SSH 到 myserver,查看最近的错误日志 |
| 重启服务 | SSH 到 myserver,重启 docker 容器 |
| 安装依赖 | SSH 到 myserver,安装 nodejs 18 |
安全铁律
| ✅ 要做 | ❌ 不要做 |
|---|---|
| 用密钥认证 | 在对话中传明文密码 |
| 不同服务器用不同密钥 | 所有服务器共用一个密钥 |
| 定期检查 authorized_keys | 把私钥发给别人 |
| 私钥设密码保护 | 把密钥提交到 Git |
常见问题
Q:为什么不用密码?
密码会出现在对话记录中,不安全。而且 AI 不会记住密码,新对话又要重新输入。密钥一次配置,永久免密。
Q:连不上怎么办?
按顺序检查:
- 服务器是否开了 SSH(端口 22)
- 公钥是否正确添加到
authorized_keys ~/.ssh/config配置是否正确- 本地私钥权限是否为 600
Q:多台服务器怎么办?
每台服务器配一个别名,在 ~/.ssh/config 里加多个 Host 即可:
Host web-server
HostName 123.45.67.89
User root
IdentityFile ~/.ssh/id_ed25519
Host db-server
HostName 98.76.54.32
User admin
IdentityFile ~/.ssh/id_ed25519_db