Codex SSH 便捷连接服务器与远程控制教程
这篇记录的是我在本地 Codex 中连接云服务器的通用流程。目标是:不用每次都手动输入一大串 SSH 命令,也尽量不暴露服务器敏感信息。
文中的 IP、用户名、密钥路径全部使用占位符,实际使用时替换成自己的信息即可。
一、准备工作
先确认自己手里有下面几类信息:
| 信息 | 示例占位符 | 说明 |
|---|---|---|
| 服务器 IP | your-server-ip | 云服务器公网 IP |
| SSH 用户名 | your-user | 常见是 root 或自建用户 |
| SSH 端口 | 22 | 默认是 22,如果改过就填实际端口 |
| 私钥路径 | ~/.ssh/your-key | 本地私钥文件路径 |
| 服务器目录 | /data/www/your-site | 可选,比如网站部署目录 |
注意:不要把真实 IP、服务器密码、私钥内容写到公开博客、公开仓库或截图里。
二、最基础的 SSH 连接命令
如果使用私钥连接服务器,基础命令是:
ssh -i ~/.ssh/your-key -p 22 your-user@your-server-ip
含义:
ssh:发起 SSH 远程连接-i ~/.ssh/your-key:指定本地私钥文件-p 22:指定 SSH 端口your-user@your-server-ip:用哪个用户连接哪台服务器
如果服务器使用默认 22 端口,也可以省略 -p 22:
ssh -i ~/.ssh/your-key your-user@your-server-ip
第一次连接时,终端可能会提示是否信任服务器指纹,确认 IP 无误后输入:
yes
连接成功后,命令行会进入服务器环境。
三、检查私钥权限
SSH 对私钥权限比较严格。如果权限太开放,可能会拒绝连接。
可以执行:
chmod 600 ~/.ssh/your-key
含义:只允许当前用户读写这个私钥文件。
如果 .ssh 目录权限异常,也可以执行:
chmod 700 ~/.ssh
含义:只允许当前用户访问 .ssh 目录。
四、推荐方式:配置 SSH 别名
每次输入完整命令比较麻烦,更推荐写进 ~/.ssh/config。
打开配置文件:
nano ~/.ssh/config
加入下面内容:
Host my-server
HostName your-server-ip
User your-user
Port 22
IdentityFile ~/.ssh/your-key
ServerAliveInterval 60
ServerAliveCountMax 3
字段含义:
Host my-server:本地连接别名,之后直接用my-server连接HostName your-server-ip:真实服务器 IPUser your-user:登录用户名Port 22:SSH 端口IdentityFile ~/.ssh/your-key:私钥路径ServerAliveInterval 60:每 60 秒发送一次保活包ServerAliveCountMax 3:连续 3 次无响应后断开
保存后连接服务器就变成:
ssh my-server
这就是最方便的方式。以后在 Codex 里也可以直接让它执行:
ssh my-server
五、用 Codex 辅助连接服务器
在 Codex 中,可以把连接命令当作普通终端命令执行。
例如直接说:
帮我连接 my-server,看一下 nginx 状态
Codex 可以执行类似命令:
ssh my-server "systemctl status nginx"
这里的关键点是:远程命令可以直接放在 SSH 后面的引号中。
例如:
ssh my-server "pwd"
含义:连接服务器后执行 pwd,查看当前目录。
ssh my-server "ls -lah /data/www/your-site"
含义:查看服务器上某个网站目录。
ssh my-server "df -h"
含义:查看服务器磁盘空间。
ssh my-server "free -h"
含义:查看服务器内存使用情况。
六、常用远程检查命令
查看系统信息
ssh my-server "uname -a"
查看系统内核和基础信息。
ssh my-server "uptime"
查看服务器运行时间和负载。
查看磁盘和内存
ssh my-server "df -h"
查看磁盘空间。
ssh my-server "free -h"
查看内存使用情况。
查看端口监听
ssh my-server "ss -tulnp"
查看当前服务器开放和监听的端口。
如果只想看 80 和 443:
ssh my-server "ss -tulnp | grep -E ':80|:443'"
查看 Nginx 状态
ssh my-server "systemctl status nginx"
查看 Nginx 服务状态。
ssh my-server "nginx -t"
检查 Nginx 配置是否正确。
ssh my-server "systemctl reload nginx"
重载 Nginx 配置。
七、用 rsync 上传文件
如果要把本地构建好的静态网站上传到服务器,常见方式是 rsync。
示例:
rsync -az --delete -e "ssh" ./public/ my-server:/data/www/your-site/
含义:
rsync:同步文件-a:归档模式,保留文件属性-z:传输时压缩--delete:删除服务器上本地已经不存在的文件-e "ssh":通过 SSH 传输./public/:本地待上传目录my-server:/data/www/your-site/:服务器目标目录
注意:--delete 很有用,但也要谨慎。目标目录写错时,可能会删除不该删的远程文件。
八、用部署脚本进一步简化
如果一个项目经常需要发布,可以把构建和上传写成脚本。
例如:
./scripts/deploy.sh ./scripts/deploy.env
通常部署脚本会做几件事:
- 构建本地项目
- 检查 SSH 配置
- 创建远程目录
- 用
rsync上传文件 - 输出部署结果
环境变量文件可以写成这样:
DEPLOY_HOST=your-server-ip
DEPLOY_USER=your-user
DEPLOY_PORT=22
SSH_KEY=/Users/your-name/.ssh/your-key
DEPLOY_PATH=/data/www/your-site
LOCAL_PUBLIC_DIR=public
如果这个文件会提交到公开仓库,不建议写真实服务器信息。可以只提交 deploy.env.example,真实的 deploy.env 放在本地并加入 .gitignore。
九、让 Codex 更安全地帮你远程操作
让 Codex 执行远程命令时,建议遵循几个原则。
先查状态,再做修改
比如先执行:
ssh my-server "systemctl status nginx"
确认状态后,再决定是否重启:
ssh my-server "systemctl restart nginx"
谨慎执行删除命令
远程服务器上的删除操作要格外小心,尤其是:
rm -rf
执行前应该确认当前目录和目标路径:
ssh my-server "pwd && ls -lah"
不要在公开内容中暴露敏感信息
不要公开:
- 真实服务器 IP
- 服务器密码
- 私钥内容
- 数据库密码
- 云厂商 AccessKey
.env里的真实生产配置
写教程时可以使用:
your-server-ip
your-user
your-key
your-site
这些占位符足够说明流程,也不会暴露真实环境。
十、常见问题排查
Permission denied
可能原因:
- 用户名写错
- 私钥路径写错
- 私钥权限不正确
- 服务器没有配置对应公钥
可以先检查:
ls -lah ~/.ssh/your-key
chmod 600 ~/.ssh/your-key
Connection refused
可能原因:
- SSH 服务没有启动
- 端口写错
- 安全组没有开放 SSH 端口
- 服务器防火墙拦截
可以从云服务器控制台检查安全组和防火墙配置。
Operation timed out
可能原因:
- 服务器 IP 不通
- 本地网络异常
- 云服务器安全组未放行
- 服务器已经关机
可以先尝试:
ping your-server-ip
如果禁用了 ping,也可以直接测试 SSH:
ssh -v my-server
-v 会输出更详细的连接日志,方便排查问题。
十一、我的推荐流程
日常使用时,我更推荐这个流程:
- 本地生成或准备 SSH 私钥
- 把公钥配置到服务器
- 在
~/.ssh/config中配置服务器别名 - 本地用
ssh my-server测试连接 - 在 Codex 中让它通过
ssh my-server "命令"执行远程检查 - 对重复操作写部署脚本或维护脚本
- 公开笔记只写占位符,不写真实服务器信息
这样做的好处是:连接命令短,远程操作清晰,迁移到新电脑时也容易恢复。
十二、命令速查
| 命令 | 含义 |
|---|---|
ssh -i ~/.ssh/your-key your-user@your-server-ip | 使用私钥连接服务器 |
ssh my-server | 使用 SSH Config 别名连接服务器 |
ssh my-server "pwd" | 在服务器上执行单条命令 |
ssh my-server "df -h" | 查看服务器磁盘空间 |
ssh my-server "free -h" | 查看服务器内存 |
ssh my-server "systemctl status nginx" | 查看 Nginx 状态 |
ssh my-server "nginx -t" | 检查 Nginx 配置 |
ssh -v my-server | 输出详细 SSH 连接日志 |
rsync -az --delete ./public/ my-server:/data/www/your-site/ | 同步本地静态文件到服务器 |
把 SSH 连接配置好之后,Codex 就可以像一个本地终端助手一样,帮你查看服务器状态、分析报错、执行部署和整理操作记录。真正要注意的是边界:公开内容用占位符,真实密钥和生产配置只留在本地。