SSH秘密鍵の安全な管理方法|漏洩を防ぐベストプラクティス

SSH秘密鍵の安全な管理方法

SSH秘密鍵を安全に管理して不正アクセスを防止しよう

SSH公開鍵認証は、現在のLinuxサーバ運用において最も一般的な認証方式の一つです。

パスワード認証よりも高いセキュリティを実現できますが、その安全性は秘密鍵の管理に大きく依存しています。

どれだけ強力な暗号アルゴリズムを利用していても、秘密鍵が漏洩してしまえば攻撃者は正規ユーザーとしてログインできる可能性があります。

実際の情報漏洩事故でも、Gitリポジトリへの誤登録や共有フォルダへの保存などが原因で秘密鍵が流出するケースがあります。

本記事ではSSH秘密鍵の管理方法や実務でのベストプラクティスについて詳しく解説します。

秘密鍵とは何か

SSH公開鍵認証では以下の2種類の鍵を利用します。

  • 公開鍵
  • 秘密鍵

公開鍵はサーバへ登録します。

一方、秘密鍵は利用者本人だけが保有する認証情報です。

例えば以下のファイルです。

~/.ssh/id_ed25519

このファイルが本人確認の役割を担っています。

なぜ秘密鍵管理が重要なのか

秘密鍵はパスワードと同等、あるいはそれ以上に重要な情報です。

攻撃者が秘密鍵を取得すると、対応する公開鍵が登録されたサーバへログインできる可能性があります。

つまり秘密鍵は「サーバへ入るためのマスターキー」と考えることができます。

秘密鍵漏洩で起こること

秘密鍵が漏洩すると以下のようなリスクがあります。

  • 不正ログイン
  • サーバ改ざん
  • データ漏洩
  • ランサムウェア感染
  • 踏み台利用

企業環境では重大インシデントにつながる可能性があります。

秘密鍵は絶対に共有しない

基本中の基本ですが、秘密鍵を他人へ渡してはいけません。

以下のような行為は危険です。

  • メール添付
  • チャット送信
  • USB共有
  • 共有フォルダ保存

管理者同士でも秘密鍵の共有は避けるべきです。

公開鍵と秘密鍵を混同しない

初心者によくあるミスです。

公開鍵です。

id_ed25519.pub

秘密鍵です。

id_ed25519

サーバへ登録するのは公開鍵です。

秘密鍵をサーバへ送ってはいけません。

パスフレーズを設定する

秘密鍵にはパスフレーズを設定できます。

作成時の例です。

$ ssh-keygen -t ed25519

途中で表示されます。
Enter passphrase:

これを設定することで、秘密鍵が盗まれてもすぐには利用できなくなります。

パスフレーズなしは危険なのか

パスフレーズなしでも公開鍵認証は利用できます。

しかし秘密鍵が漏洩した場合、即座に悪用される可能性があります。

実務では重要サーバほどパスフレーズ設定が推奨されます。

ssh-agentを活用する

パスフレーズ付き鍵を利用する場合はssh-agentが便利です。

$ eval $(ssh-agent)
$ ssh-add ~/.ssh/id_ed25519

一度入力すれば以後の入力を省略できます。

利便性と安全性を両立できます。

秘密鍵の権限を適切に設定する

秘密鍵は適切な権限で保護する必要があります。

推奨設定です。
chmod 600 ~/.ssh/id_ed25519

確認方法です。
ls -l ~/.ssh

他ユーザーが読み取れない状態にしましょう。

バックアップも慎重に行う

秘密鍵はバックアップが必要です。

しかしバックアップ先も保護しなければ意味がありません。

推奨例です。

  • 暗号化USB
  • パスワード付き保管
  • 金庫保管
  • 暗号化ストレージ

平文で保存しないことが重要です。

GitHubへ登録しない

非常に多い事故の一つです。

誤って秘密鍵をGitへ登録してしまうケースがあります。

例えば以下です。

.ssh/id_ed25519

GitHubへ公開すると誰でも取得できてしまいます。

.gitignoreの利用も重要です。

複数用途で鍵を分ける

実務では用途ごとに鍵を分離することが推奨されます。

例です。

web_key
dns_key
aws_key
github_key

万が一漏洩しても被害範囲を限定できます。

退職者や異動者の管理

企業環境では退職時の管理も重要です。

退職者の公開鍵は速やかに削除します。

対象ファイルです。

~/.ssh/authorized_keys

不要な鍵を放置してはいけません。

秘密鍵のローテーション

長期間同じ鍵を利用し続けるのは好ましくありません。

定期的な更新が推奨されます。

一般的な流れです。

  1. 新しい鍵作成
  2. 公開鍵登録
  3. 接続確認
  4. 古い鍵削除

計画的に実施しましょう。

クラウド環境での注意点

AWSやAzureでも秘密鍵管理は重要です。

特にAWS EC2では秘密鍵を再取得できない場合があります。

紛失すると復旧が困難になることもあります。

安全なバックアップが必須です。

ノートPC紛失時のリスク

ノートPCに秘密鍵を保存している場合は注意が必要です。

以下の対策が有効です。

  • ディスク暗号化
  • パスフレーズ設定
  • 画面ロック
  • リモートワイプ

端末保護も秘密鍵保護の一部です。

企業で推奨される運用

  • ED25519利用
  • パスフレーズ設定
  • ssh-agent利用
  • 定期ローテーション
  • 退職者鍵削除
  • 監査ログ確認

これらを実施することで安全性を高められます。

よくある運用ミス

  • 秘密鍵をメール送信する
  • 共有フォルダへ保存する
  • GitHubへ登録する
  • パスフレーズを設定しない
  • 退職者の鍵を削除しない

どれも実際に発生している事故です。

まとめ

SSH公開鍵認証の安全性は秘密鍵管理に大きく依存しています。

秘密鍵はパスワード以上に重要な認証情報であり、漏洩すると重大なセキュリティ事故につながる可能性があります。

パスフレーズ設定、ssh-agent利用、適切な権限管理、定期的なローテーションなどを実施し、安全な運用を心掛けましょう。

SSH運用において最も守るべき情報は秘密鍵であることを忘れてはいけません。