概要
- SSHの初回接続時 にはサーバの真正性確認が必要
- 公開鍵認証 によりパスワード入力を省略可能
- ホスト鍵の変更 時には警告や手動対応が必要
- SSH CA(認証局)と証明書 を使えば運用が大幅に簡素化
- 証明書運用のメリット と基本的な導入手順を解説
SSH証明書:より良いSSH体験
- サーバへ初めて SSH接続 する際、「このサーバが本物か?」という確認ダイアログの表示
- 例:
ssh -l jane 192.0.2.65実行時の警告表示
- 例:
- Trust on First Use(TOFU) による初回接続時の信頼確立
- サーバ管理者から フィンガープリント を事前に取得・照合する運用推奨
- 例:
ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_keyでフィンガープリント確認
- ssh-keyscan などで公開鍵取得可能だが、 別経路での検証 が必要
SSH鍵ペアによる認証
- 自分の 公開鍵 をサーバの
$HOME/.ssh/authorized_keysに設置- サーバ接続時に 秘密鍵 とパスフレーズで認証
- 鍵作成例 :
ssh-keygen -t ecdsa -C "JP's demo key" -f demokey- 公開鍵のサーバ登録:
ssh-copy-id -i demokey.pub jane@192.0.2.65
- 公開鍵のサーバ登録:
- SSHエージェント 利用でパスフレーズ入力の省略
eval $(ssh-agent)とssh-add demokeyで管理
公開鍵認証の課題
- 各ユーザーごとに公開鍵設置 が必要
- TOFU による known_hostsファイル へのホスト鍵保存
- ホスト鍵のロール(再生成) 時に警告発生
- サーバのホスト鍵変更時、
ssh-keygen -Rで known_hosts から削除し再登録が必要
- サーバのホスト鍵変更時、
- 大規模環境 ではこれらの運用が煩雑
SSH CA(認証局)とSSH証明書
- SSH CA はシンプルな SSH鍵ペア で運用可能
- OpenSSH 5.4以降 で証明書運用対応
- SSH証明書 の特徴
- 公開鍵ファイルに見えるが、 証明書情報 を含む
- 例:
ecdsa-sha2-nistp256-cert-v01@openssh.com ... Jane's key
- CA鍵ペア を使い、ユーザー鍵やホスト鍵を署名
- CA導入のメリット
- サーバへの公開鍵配布(
authorized_keys編集)が不要 - 不要な鍵の登録リスク低減
- ホスト鍵ロール 時もクライアント側警告なし
- TOFU不要、ユーザー・サーバ間の相互信頼が自動化
- 証明書の有効期間や利用ユーザー(プリンシパル)を柔軟に制御
- IP制限 やリモートコマンド制限なども証明書側で設定可能
- known_hosts にCA公開鍵を1行追加するだけで全ユーザー適用
- サーバへの公開鍵配布(
SSH CA運用の基本手順
- CA用ディレクトリ作成 と鍵生成
- 例:
umask 077; mkdir CA; ssh-keygen -t ecdsa -C "JP's SSH CA" -f CA/ssh-ca
- 例:
- ユーザー鍵ペア生成 (既存鍵でも可)
- 例:
ssh-keygen -t ecdsa -C "Jane's key" -f jane
- 例:
- ユーザー公開鍵をCAで署名し証明書発行
- 証明書発行コマンド例や詳細は割愛(続きで解説可能)
SSH証明書運用のまとめ
- 大規模サーバ運用 や セキュリティ要件の高い現場 でのSSH運用最適化
- 鍵管理・配布・信頼性向上 のための現代的アプローチ
- OpenSSH標準機能 で導入可能、追加ソフト不要
ご要望があれば、 証明書署名コマンド例やサーバ・クライアントの設定手順 も詳述可能です。