SSH鍵管理の基本:安全なペアの作り方・配置・権限設定
SSH鍵は適切な作成と設定、管理が重要です。SSH鍵の作り方から安全な配置、パーミッション設定、鍵のローテーションとバックアップまでを整理し、迷いやすいポイントとNGポイントを記載します。
はじめに
SSH鍵は「強力なパスワード+多要素」を代替する重要な認証手段です。鍵の生成・配置・権限・バックアップを正しく行うことで、なりすましや漏洩リスクを大きく減らせます。この記事では迷いやすいポイントをまとめます。
鍵の生成
推奨は Ed25519(軽量・高速・安全性が現行水準)です。以下で生成しましょう。パスフレーズは安全のため必ず設定してください。
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "your_email@example.com"古い機器やFIPS環境でEd25519が使えない場合のみ、RSAを選びましょう(最低でも3072bit以上)。RSAは鍵長を伸ばさないと安全性が不足し、鍵長が長いほど計算が重くなるため、互換性理由がない限りEd25519を使ったほうがいいかと思います。
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -C "your_email@example.com"配置場所とパーミッション
.ssh ディレクトリと鍵の権限を制限しましょう。
mkdir -p ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519.pubWindowsの場合も同様に %USERPROFILE%\.ssh でACLを自分のみに設定してください。
公開鍵の登録(サーバー側)
公開鍵をサーバーの authorized_keys に追加しましょう(初回はファイルを作成)。
mkdir -p ~/.ssh
chmod 700 ~/.ssh
cat ~/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys既存鍵と区別するためにコメント(メールや用途)をつけましょう。例: ssh-ed25519 AAAA... user@example.com や ssh-ed25519 AAAA... deploy-prod@example.com。rootに直接登録せず通常ユーザー+sudo運用を基本にしてください。
禁止・NG例
やってはいけない代表例です。以下は避けましょう。
- 秘密鍵をメールやチャットで送る。
- 同じ秘密鍵を複数人で共有(個別に発行して管理)。
- パスフレーズなし運用(自動化はエージェントや限定鍵で対応)。
- 公開鍵・秘密鍵を混同して配布。
ローテーションとバックアップ
安全を保つための定期運用と保管の基本です。
- ローテーション: 半年〜1年で鍵を再発行し、古い鍵は authorized_keys から削除。
- バックアップ: 暗号化ZIPや安全なパスワードマネージャで保存。平文コピーはNG。
- 万一漏洩・紛失時は即座に該当鍵を authorized_keys から削除し、新しい鍵を配布。
複数環境・用途別の分離
用途ごとに鍵を分けると事故を減らせます。
- 業務/個人、環境(本番/検証)で鍵ペアを分ける。
- Git用とサーバーSSH用を分け、
~/.ssh/configで Host 毎に鍵を指定。 - 例:
Host prod-server HostName example.com User deploy IdentityFile ~/.ssh/id_ed25519_prod
トラブルシュートのチェックリスト
接続できないときに優先して確認しましょう。
- パーミッション:
.sshが 700、秘密鍵が 600 か - 所有者: root ではなくログインユーザーか
- authorized_keys の改行・余計な空白がないか
- サーバー側の
/etc/ssh/sshd_configでPubkeyAuthentication yesになっているか - known_hosts が壊れている場合は該当行を削除
まとめ
- 鍵は「生成・配置・権限・ローテーション・バックアップ」をワンセットで管理する。
- パスフレーズ+権限制限が基本。共有禁止・定期更新でリスクを下げる。
- 用途別に鍵を分け、
ssh_configで明示的に指定すると運用ミスを減らせる。
関連記事
-
前の記事
Windows11対応PCを安く探すなら|第10世代Intel・FHD・8GBで26,000円以下の現実解 2026.01.10
-
次の記事
Windowsのターミナル・SSHクライアント比較:Windows Terminal / RLogin / PuTTY / Tera Term 2026.01.12