mcpField
G
gen-ssh-key

gen-ssh-key

github.com/chinayin安全044 次安装15 周前更新
代码仓库

关于 gen-ssh-key

通过团队标准脚本生成 SSH 密钥的技能,统一密钥类型、命名、权限和覆盖保护。适合需要按服务生成密钥并安全处理私钥的用户。

主要功能

  1. 01默认使用 Ed25519,可选 RSA 4096
  2. 02按服务命名密钥文件
  3. 03设置私钥和目录权限
  4. 04默认拒绝覆盖,可用强制选项
  5. 05支持 JSON 输出和试运行

适用场景

  1. 01为指定服务创建密钥对
  2. 02按需生成 RSA 4096 密钥
  3. 03将密钥保存到指定目录
  4. 04获取机器可读的生成结果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/chinayin/coding-skillhub --skill gen-ssh-key

安装后在 Claude Code 中输入/gen-ssh-key确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.env.example
test.sh
evals/
evals.json
scripts/
gen-ssh-key.sh

详细介绍

生成 SSH 密钥(团队标准)

运行一个脚本来生成符合标准的 SSH 密钥;不要手动拼写 ssh-keygen 命令。脚本内置了团队规则(密钥类型、命名、 权限、覆盖保护),因此使用该脚本才能确保符合规范。

工作流

  1. 根据用户提到的服务或用途确定 <name> (例如 “jumpserver”、“gitlab”)。使用 kebab-case;不含空格或斜杠。

  2. 根据请求选择标志:

    • 明确要求 RSA:添加 --rsa(始终使用 RSA 4096;脚本 会拒绝生成 RSA 2048,因为团队禁止使用强度过低的密钥)。
    • 需要密码短语:将密码短语写入临时文件,传入 --passphrase-file <file>,然后删除该文件。切勿将 密码短语放在命令行中。
    • 需要机器可读的结果(或由其他程序使用):添加 --json (stdout 仅输出纯 JSON;诊断信息写入 stderr)。
    • 用户指定了目标位置:添加 --out-dir <dir>(可以是 当前目录,例如 --out-dir .),密钥会直接写入该位置。 否则,如果既未设置 --out-dir,也未设置技能的 .env 中的 SSH_KEY_OUTPUT_DIR,密钥将写入默认目录 ~/.ssh/generated-keys。
  3. 从技能目录运行脚本:

    ./scripts/gen-ssh-key.sh <name> [flags]
    
  4. 向用户反馈:提供公钥内容(可以安全分享)和文件路径。切勿打印、引用或 传输私钥内容,也切勿将密码短语写入结果或日志——JSON 输出会有意仅包含 passphrase_protected: true。

如果目标文件已存在,脚本会拒绝执行;重试时使用 --force 前先询问用户。

示例

./scripts/gen-ssh-key.sh jumpserver                       # Ed25519 -> jumpserver.{ppk,pem,pub}
./scripts/gen-ssh-key.sh gitlab --rsa                     # RSA 4096
./scripts/gen-ssh-key.sh svc-x --passphrase-file ./pp.txt --json
./scripts/gen-ssh-key.sh jumpserver --out-dir ~/.ssh/generated-keys
./scripts/gen-ssh-key.sh jumpserver --comment "[email protected]"
./scripts/gen-ssh-key.sh jumpserver --dry-run             # show the plan only
./scripts/gen-ssh-key.sh --tool ssh-keygen jumpserver     # skip puttygen
./scripts/gen-ssh-key.sh -h                               # full flag reference

脚本内置的团队规则

  • 密钥类型:默认使用 Ed25519;--rsa 表示 RSA 4096;绝不使用 RSA 2048。
  • 工具:优先使用 puttygen(为 PuTTY 用户添加 .ppk);否则使用 ssh-keygen。
  • 命名:<name>.ppk / .pem / .pub,以便按服务识别密钥。
  • 注释 -C 默认为 <name>;使用 --comment 覆盖。
  • 私钥执行 chmod 600;新建输出目录执行 chmod 700。
  • 默认拒绝覆盖;必须使用 --force。

配置

输出目录优先级:--out-dir > .env 中的 SSH_KEY_OUTPUT_DIR (位于技能根目录,即 scripts/ 的上一级目录)> 内置默认目录 ~/.ssh/generated-keys。如果既未设置 --out-dir,也没有 .env,密钥会写入 该默认目录,而非当前目录(因此不会悄然写入技能目录);如果确实要使用当前 目录,请传入 --out-dir .。如需永久更改默认目录,请在技能根目录执行 cp .env.example .env,并将 SSH_KEY_OUTPUT_DIR 指向其他位置。

生成文件

文件用途
<name>.ppkPuTTY 原生密钥(仅 puttygen 路径会生成)
<name>.pemOpenSSH 私钥(chmod 600,请妥善保密)
<name>.pubOpenSSH 公钥(可分享;用于导入 / authorized_keys)

退出代码

0 成功;1 参数错误、目标已存在或生成失败;2 没有可用工具(未安装 puttygen 和 ssh-keygen)。

评论

支持 Markdown