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. 05JSON 出力とドライラン

活用シーン

  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 キーを生成するには、スクリプトを 1 つ実行してください。ssh-keygen コマンドを手作業で組み立てないでください。このスクリプトにはチームのルール(キーの種類、命名、アクセス権、上書き防止)が組み込まれているため、これを使用することで準拠が保証されます。

ワークフロー

  1. ユーザーが言及したサービスまたは用途から <name> を決めます (例:「jumpserver」、「gitlab」)。ケバブケースを使用し、空白やスラッシュは使いません。

  2. リクエストに応じてフラグを選びます:

    • RSA が明示的に指定された場合:--rsa を追加します(常に RSA 4096 です。チームでは弱すぎるとして禁止している RSA 2048 の生成はスクリプトが拒否します)。
    • パスフレーズが必要な場合:パスフレーズを一時ファイルに書き込み、--passphrase-file <file> を渡して、処理後にファイルを削除します。パスフレーズをコマンドラインに含めてはいけません。
    • 機械可読な結果が必要な場合(または別のプログラムが結果を処理する場合):--json を追加します(標準出力は純粋な JSON で、診断情報は標準エラー出力に出力されます)。
    • ユーザーが保存先を指定した場合:--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(スキルルートの scripts/ の 1 つ上の階層にあります)の SSH_KEY_OUTPUT_DIR > 組み込みのデフォルト ~/.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 のどちらもインストールされていない)。

コメント