gen-ssh-key について
チーム標準のスクリプトを使い、種類、命名、権限、上書き防止のルールに沿って SSH 鍵を生成するスキルです。サービス別の鍵を作成し、秘密鍵を安全に扱いたいユーザー向けです。
主な機能
- 01既定は Ed25519、指定時は RSA 4096
- 02サービス名に基づく鍵ファイル名
- 03秘密鍵とディレクトリの権限設定
- 04既定で上書きを拒否、強制オプションあり
- 05JSON 出力とドライラン
活用シーン
- 01指定したサービス用の鍵ペアを作成
- 02必要に応じて RSA 4096 鍵を生成
- 03指定ディレクトリに鍵を保存
- 04機械可読な生成結果を取得
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ chinayin/ coding-skillhub --skill gen-ssh-keyインストール後、Claude Code で/gen-ssh-keyを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.env.exampletest.shevals/evals.jsonscripts/gen-ssh-key.sh詳細
SSH キーを生成する(チーム標準)
標準に準拠した SSH キーを生成するには、スクリプトを 1 つ実行してください。ssh-keygen コマンドを手作業で組み立てないでください。このスクリプトにはチームのルール(キーの種類、命名、アクセス権、上書き防止)が組み込まれているため、これを使用することで準拠が保証されます。
ワークフロー
-
ユーザーが言及したサービスまたは用途から
<name>を決めます (例:「jumpserver」、「gitlab」)。ケバブケースを使用し、空白やスラッシュは使いません。 -
リクエストに応じてフラグを選びます:
- 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に保存されます。
- RSA が明示的に指定された場合:
-
スキルのディレクトリからスクリプトを実行します:
./scripts/gen-ssh-key.sh <name> [flags] -
結果をユーザーに報告します。公開鍵の内容(共有しても安全です)とファイルパスを伝えてください。秘密鍵の内容を表示、引用、送信してはいけません。また、パスフレーズを結果やログに書き込んではいけません。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>.ppk | PuTTY ネイティブのキー(puttygen を使用する場合のみ) |
<name>.pem | OpenSSH 秘密鍵(chmod 600、秘密にしてください) |
<name>.pub | OpenSSH 公開鍵(共有用。インポート/authorized_keys に使用) |
終了コード
0 成功、1 引数不正、対象が存在する、または生成失敗、2 使用可能なツールがない(puttygen と ssh-keygen のどちらもインストールされていない)。