Codex SSH 便捷连接服务器与远程控制教程

记录如何用 SSH 密钥、SSH Config 和 Codex 快速连接云服务器,并让 Codex 辅助执行远程排查、部署和运维命令。

Codex SSH 便捷连接服务器与远程控制教程

这篇记录的是我在本地 Codex 中连接云服务器的通用流程。目标是:不用每次都手动输入一大串 SSH 命令,也尽量不暴露服务器敏感信息。

文中的 IP、用户名、密钥路径全部使用占位符,实际使用时替换成自己的信息即可。

一、准备工作

先确认自己手里有下面几类信息:

信息示例占位符说明
服务器 IPyour-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:真实服务器 IP
  • User 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

通常部署脚本会做几件事:

  1. 构建本地项目
  2. 检查 SSH 配置
  3. 创建远程目录
  4. rsync 上传文件
  5. 输出部署结果

环境变量文件可以写成这样:

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 会输出更详细的连接日志,方便排查问题。

十一、我的推荐流程

日常使用时,我更推荐这个流程:

  1. 本地生成或准备 SSH 私钥
  2. 把公钥配置到服务器
  3. ~/.ssh/config 中配置服务器别名
  4. 本地用 ssh my-server 测试连接
  5. 在 Codex 中让它通过 ssh my-server "命令" 执行远程检查
  6. 对重复操作写部署脚本或维护脚本
  7. 公开笔记只写占位符,不写真实服务器信息

这样做的好处是:连接命令短,远程操作清晰,迁移到新电脑时也容易恢复。

十二、命令速查

命令含义
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 就可以像一个本地终端助手一样,帮你查看服务器状态、分析报错、执行部署和整理操作记录。真正要注意的是边界:公开内容用占位符,真实密钥和生产配置只留在本地。