メインコンテンツまでスキップ

パスワード生成

generate コマンドは Go の crypto/rand パッケージを使用して暗号学的に安全なランダムパスワードを作成します。

前提条件​

基本的な使い方​

secretctl generate [flags]

デフォルトパスワード​

すべての文字タイプを含む24文字のパスワードを生成:

secretctl generate

出力:

x9K#mP2!nQ7@wR4$tY6&jL

デフォルトのパスワードには以下が含まれます:

  • 小文字(a-z)
  • 大文字(A-Z)
  • 数字(0-9)
  • 記号(!@#$%^&*()_+-=[]{}|;:,.<>?)

コマンドオプション​

フラグ短縮形説明デフォルト
--length-lパスワード長(8-256)24
--count-nパスワード数(1-100)1
--no-symbols記号を除外false
--no-numbers数字を除外false
--no-uppercase大文字を除外false
--no-lowercase小文字を除外false
--exclude除外する文字""
--copy-cクリップボードにコピーfalse

パスワード長のカスタマイズ​

長いパスワード​

# 高セキュリティ用の32文字パスワード
secretctl generate -l 32

# 暗号化キー用の64文字パスワード
secretctl generate -l 64

短いパスワード​

# 最小8文字のパスワード
secretctl generate -l 8
注意

16文字未満のパスワードはブルートフォース攻撃に対して脆弱な可能性があります。機密アカウントには長いパスワードを使用してください。

複数パスワードの生成​

一度に複数のパスワードを生成:

# 5つのパスワードを生成
secretctl generate -n 5

出力:

kL9#mN2!pQ7@rS4$
tU6&vW8*xY0^zA2%
bC4(dE6)fG8+hI0-
jK2=lM4[nO6]pQ8{
rS0|tU2;vW4:xY6,

以下の用途に便利:

  • チームオンボーディング用のパスワード作成
  • テスト認証情報の生成
  • サービス間のパスワードローテーション

文字セットのカスタマイズ​

英数字のみ​

記号を受け付けないシステム用:

secretctl generate --no-symbols

文字のみ​

コードや識別子用:

secretctl generate --no-symbols --no-numbers

数字のみ​

PIN や数値コード用:

secretctl generate --no-symbols --no-uppercase --no-lowercase -l 6

出力:

847291

大文字のみ​

システムコードやライセンスキー用:

secretctl generate --no-symbols --no-numbers --no-lowercase

紛らわしい文字の除外​

混同しやすい文字を削除:

# 0/O, 1/l/I など混同しやすい文字を除外
secretctl generate --exclude "0O1lI"

以下の用途に便利:

  • 声に出して読み上げたり手動で入力するパスワード
  • QR コードや印刷物
  • 手動入力でのユーザーエラー削減

一般的な除外セット​

# 紛らわしい文字を除外
secretctl generate --exclude "0O1lI"

# シェルで問題となる文字を除外
secretctl generate --exclude '$`"'\''\\!'

# XML/HTML 特殊文字を除外
secretctl generate --exclude "<>&'\""

クリップボード連携​

生成したパスワードを直接クリップボードにコピー:

secretctl generate -c

出力:

kL9#mN2!pQ7@rS4$tU6&vW8*
WARNING: Password copied to clipboard is accessible by all processes
Clipboard will not be automatically cleared. Overwrite manually when done.
Password copied to clipboard

プラットフォームサポート​

プラットフォームクリップボードツール
macOSpbcopy(組み込み)
Linuxxclip または xsel
Windowsclip(組み込み)
注意

クリップボードは実行中のすべてのプロセスからアクセス可能です。使用後は他のコンテンツをコピーしてクリアしてください。

Linux セットアップ​

Linux でクリップボードサポートをインストール:

# Debian/Ubuntu
sudo apt install xclip

# Fedora
sudo dnf install xclip

# Arch
sudo pacman -S xclip

実践的な例​

データベースパスワード​

データベース用の強力な32文字パスワード:

secretctl generate -l 32 | secretctl set DB_PASSWORD

API キー形式​

API キーに適した英数字文字列を生成:

secretctl generate -l 40 --no-symbols

WiFi パスワード​

共有しやすい人間が読めるパスワード:

secretctl generate -l 16 --exclude "0O1lI"

SSH キーパスフレーズ​

SSH キー保護用の強力なパスフレーズ:

secretctl generate -l 24 -c

チームオンボーディング​

新しいチームメンバー用の一時パスワードを生成:

# オンボーディング用に10個のパスワードを生成
secretctl generate -n 10 -l 16 --no-symbols

AWS シークレットキー形式​

AWS スタイルのシークレットアクセスキーをシミュレート:

secretctl generate -l 40 --no-symbols

バックアップ暗号化キー​

バックアップ暗号化用の高エントロピーキーを生成:

secretctl generate -l 64 --no-symbols

パスワード強度​

エントロピー計算​

パスワード強度はエントロピーのビット数で測定されます:

構成文字セットサイズ24文字のエントロピー
すべての文字94~157ビット
記号なし62~143ビット
文字のみ52~137ビット
英数小文字36~124ビット

エントロピーが高い = より強いパスワード。

推奨長​

用途最小長推奨
個人アカウント1216+
データベースパスワード2432+
API キー/トークン3240+
暗号化キー3264+
マスターパスワード1624+

他のコマンドとの組み合わせ​

生成して保存​

# 新しいパスワードを生成して保存
secretctl generate | secretctl set SERVICE_PASSWORD \
--notes="Auto-generated on $(date)" \
--expires="90d"

エクスポート用に生成​

# 複数のパスワードを生成してエクスポート
secretctl generate -n 5 | while read pw; do
echo "Temp password: $pw"
done

パスワードローテーション​

# 新しいパスワードを生成して既存のシークレットを更新
secretctl generate -l 32 | secretctl set DB_PASSWORD \
--notes="Rotated on $(date +%Y-%m-%d)"

セキュリティ上の考慮事項​

暗号化セキュリティ​

secretctl は Go の crypto/rand パッケージを使用:

  • オペレーティングシステムの暗号学的乱数生成器を使用
  • セキュリティに敏感なアプリケーションに適している
  • math/rand のような擬似乱数生成器は決して使用しない

クリップボードセキュリティ​

--copy 使用時:

  • パスワードは実行中のすべてのプロセスからアクセス可能
  • クリップボードは自動的にクリアされない
  • 使用後は常にクリップボードを上書き

ログ記録を避ける​

生成したパスワードをログに記録しないよう注意:

# 悪い例: パスワードがシェル履歴に表示される
echo $(secretctl generate)

# 良い例: 直接パイプするかクリップボードを使用
secretctl generate | secretctl set MY_SECRET
secretctl generate -c

シェル履歴​

generate コマンド自体は、コマンドラインにパスワードが含まれないため、シェル履歴に対して安全です。

トラブルシューティング​

"clipboard tool not found" エラー​

Linux では、クリップボードツールをインストール:

# xclip をインストール
sudo apt install xclip

# または xsel をインストール
sudo apt install xsel

"password length must be at least 8" エラー​

最小パスワード長は8文字:

# これは失敗
secretctl generate -l 4

# 最小8を使用
secretctl generate -l 8

"character set is empty" エラー​

少なくとも1つの文字タイプが有効であることを確認:

# これは失敗 - すべての文字タイプが除外
secretctl generate --no-symbols --no-numbers --no-uppercase --no-lowercase

# 少なくとも1つのタイプを含める
secretctl generate --no-symbols --no-numbers

クリップボードが動作しない​

クリップボードコマンドが利用可能か確認:

# macOS
which pbcopy

# Linux
which xclip || which xsel

# Windows (PowerShell)
Get-Command clip

次のステップ​