ssh-vps-manage
Manage VPS SSH aliases in ~/.ssh/vps.config (included from ~/.ssh/config) with unified key-based authentication and direct key sync.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Manage VPS SSH aliases in ~/.ssh/vps.config (included from ~/.ssh/config) with unified key-based authentication and direct key sync.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | ssh_vps_manage |
| description | Manage VPS SSH aliases in ~/.ssh/vps.config (included from ~/.ssh/config) with unified key-based authentication and direct key sync. |
This skill focuses on 统一用 ~/.ssh/vps 公钥连接,并把连接信息写入 ~/.ssh/vps.config(由 ~/.ssh/config 通过 Include ~/.ssh/vps.config 引入)。
默认不走外部 ssh-agent(例如 1Password / Secretive 等 agent)。
新机初始化的安全顺序,务必按此执行:
init-key(首次,本地生成 ~/.ssh/vps,已存在则跳过)add <alias> <host> --password '<pw>'(存别名 + 下发公钥)<alias> 或 status <alias>:验证密钥能登lock <alias>(关闭密码登录);如需改端口再 port <alias> [newport]lock / port 是破坏性、修改远端 sshd 的操作,执行前必须先确认密钥可登;脚本本身也会先验证,验证不过会拒绝执行、不会把人锁在门外。OK: / Done: 前缀输出,失败以 FAIL: / ERROR: 或非零退出码表示——据此判断结果。port 改端口前请提醒用户:检查服务商安全组/外部防火墙是否放行新端口,否则本机配好也连不上(脚本会实测新端口、连不上自动回滚到旧端口)。scripts/ssh-vps.sh:增删查改别名、同步 key、直连。bash skills/ssh_vps_manage/scripts/ssh-vps.sh help
bash skills/ssh_vps_manage/scripts/ssh-vps.sh init-key
非交互生成 ~/.ssh/vps(ed25519),已存在则不覆盖。
bash skills/ssh_vps_manage/scripts/ssh-vps.sh list
bash skills/ssh_vps_manage/scripts/ssh-vps.sh add <alias> <host> --user root --port 22
bash skills/ssh_vps_manage/scripts/ssh-vps.sh add <alias> <host> --user root --port 22 --password '<password>'
bash skills/ssh_vps_manage/scripts/ssh-vps.sh rm <alias>
bash skills/ssh_vps_manage/scripts/ssh-vps.sh sync-key <alias> --password '<password>'
# 或直接传主机
bash skills/ssh_vps_manage/scripts/ssh-vps.sh sync-key <host> --user root --port 22 --password '<password>'
bash skills/ssh_vps_manage/scripts/ssh-vps.sh <alias>
bash skills/ssh_vps_manage/scripts/ssh-vps.sh <host>
bash skills/ssh_vps_manage/scripts/ssh-vps.sh <host>:<port>
bash skills/ssh_vps_manage/scripts/ssh-vps.sh <user>@<host>
bash skills/ssh_vps_manage/scripts/ssh-vps.sh connect <alias> "uname -a"
bash skills/ssh_vps_manage/scripts/ssh-vps.sh lock <alias>
先验证密钥登录正常;再关闭远端 PasswordAuthentication + KbdInteractiveAuthentication + ChallengeResponseAuthentication(处理 sshd_config.d / cloud-init 覆盖);重启前先 sshd -t 语法测试(不过则还原备份、不重启),最后 sshd -T 复核生效。
bash skills/ssh_vps_manage/scripts/ssh-vps.sh port <alias> # 改到默认 20266
bash skills/ssh_vps_manage/scripts/ssh-vps.sh port <alias> 2222 # 显式端口
流程:验证旧端口可登 → 新旧端口并存 → 实测新端口 → 通过才切到仅新端口并更新别名;任何一步失败自动回滚旧端口。会尝试放行 ufw / firewalld(nftables 需手动放行)。
bash skills/ssh_vps_manage/scripts/ssh-vps.sh status <alias>
bash skills/ssh_vps_manage/scripts/ssh-vps.sh status --all
bash skills/ssh_vps_manage/scripts/ssh-vps.sh info <alias>
输出:系统版本、内核、CPU、内存、磁盘、IP、Uptime。
~/.ssh/vps.config(脚本会自动确保主配置包含 Include ~/.ssh/vps.config):
IdentityFile ~/.ssh/vpsIdentitiesOnly yesIdentityAgent /dev/null(默认不走外部 ssh-agent)UseKeychain yesAddKeysToAgent yesadd+--password 重新同步 key 后切到 key 登录。~/.ssh/vps。add <alias> <host> 里自行命名(字母/数字/./_/-)VPS_KEY_PATH(默认 ~/.ssh/vps,可指向你已有的密钥)VPS_DEFAULT_PORT(默认 22)或每别名的 --portport 目标端口:VPS_HARDEN_PORT(默认 20266)或 port <alias> <newport>VPS_DEFAULT_USER(默认 root)--password / 环境变量 VPS_SSH_PASSWORD / --password-stdin(避免明文进 ps / history)-t 分配 PTY。如 ssh-vps.sh myvps htop、ssh-vps.sh myvps vim /etc/nginx/nginx.conf 直接可用;无命令时(纯 shell 会话)SSH 默认开 PTY,无需手动加 -t。ssh '...' 这类单行嵌套写法;优先改用 ssh-vps-run.sh <alias> <<'REMOTE' ... REMOTE(示例见 scripts/ssh-vps-run.sh)。exec 里需要先拼复杂脚本时,也优先先写临时脚本或单引号 heredoc,再调用 ssh-vps-run.sh,不要把多层引号直接塞进一条超长命令。bash <(curl ...) y 会被当版本号),也不要用 echo "y" | bash <(curl ...) 管道喂(管道关闭后后续交互提示读到空值,配置不生效)。正确做法:直接装默认值不传任何输入,装完用 CLI 命令单独配置(用户名、密码、端口等)。