authorized_keysの役割とは?SSH公開鍵認証の仕組みと設定方法

authorized_keysの役割とは?

authorized_keysを理解してSSH公開鍵認証を使いこなそう

SSH公開鍵認証を設定する際、必ず登場するのがauthorized_keysというファイルです。

Linuxサーバ管理者であれば頻繁に目にするファイルですが、「何を保存しているのか」「なぜ必要なのか」「どのように管理すべきなのか」まで理解している方は意外と多くありません。

SSH公開鍵認証は、秘密鍵と公開鍵を利用して安全な認証を実現する仕組みです。そしてサーバ側で公開鍵を管理する重要なファイルがauthorized_keysです。

本記事ではauthorized_keysの役割や設定方法、実務での運用ポイントについて詳しく解説します。

authorized_keysとは何か

authorized_keysとは、SSH公開鍵認証で利用する公開鍵を保存するファイルです。

SSHサーバはログイン要求を受けると、このファイルに登録されている公開鍵を参照して認証を行います。

ファイル名は以下です。
authorized_keys

通常はユーザーのホームディレクトリ配下に配置されます。
~/.ssh/authorized_keys

例えばstudentユーザーの場合は以下になります。
/home/student/.ssh/authorized_keys

なぜauthorized_keysが必要なのか

公開鍵認証ではサーバ側が利用者の公開鍵を保持している必要があります。

そのため、ログインを許可する公開鍵を登録する場所としてauthorized_keysが利用されます。

簡単に言えば「この公開鍵を持つ人のログインを許可する」という許可リストです。

そのためauthorized_keysという名前になっています。

SSH公開鍵認証の流れ

authorized_keysが利用される流れを見てみましょう。

  1. 利用者が秘密鍵と公開鍵を作成する
  2. 公開鍵をサーバへ登録する
  3. サーバはauthorized_keysへ保存する
  4. 利用者がSSH接続する
  5. 秘密鍵で署名を行う
  6. サーバが公開鍵で検証する
  7. 認証成功

つまり、authorized_keysは認証に利用する公開鍵の保管場所なのです。

authorized_keysの保存場所

通常は以下のディレクトリに配置されます。
~/.ssh/

確認してみましょう。
$ ls -la ~/.ssh

例です。
.ssh/
authorized_keys

存在しない場合は作成する必要があります。

authorized_keysの中身

内容を確認してみましょう。
$ cat ~/.ssh/authorized_keys

表示例です。
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...

これが公開鍵です。

1行につき1つの公開鍵が登録されています。

複数の公開鍵を登録できる

authorized_keysには複数の公開鍵を登録できます。

例です。

ssh-ed25519 AAAA...
ssh-ed25519 BBBB...
ssh-rsa CCCC...

複数の管理者が同じサーバを利用する場合によく使われます。

企業環境では一般的な運用です。

公開鍵を登録する方法

最も簡単な方法はssh-copy-idです。

$ ssh-copy-id user@server

自動的にauthorized_keysへ追記されます。

実務でもよく利用される方法です。

手動で登録する方法

手動で登録する場合は公開鍵内容をコピーします。
$ cat ~/.ssh/id_ed25519.pub

サーバ側でauthorized_keysへ追記します。
$ vi ~/.ssh/authorized_keys

改行して追加するだけです。

公開鍵削除の方法

不要になった公開鍵は削除できます。

authorized_keysを編集します。

$ vi ~/.ssh/authorized_keys

対象の行を削除するだけです。

退職者や異動者のアカウント管理でよく行われます。

重要なパーミッション設定

SSHはセキュリティ上、権限チェックを厳しく行います。

一般的な設定は以下です。
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

所有者確認です。

$ chown user:user ~/.ssh
$ chown user:user ~/.ssh/authorized_keys

権限が誤っていると認証に失敗します。

権限異常で発生するエラー

よく見られるエラーです。

Permission denied (publickey)

主な原因です。

  • .ssh権限異常
  • authorized_keys権限異常
  • 所有者異常
  • SELinux設定

SSH接続トラブルの定番です。

sshdはどのように利用するのか

OpenSSH Serverは認証時にauthorized_keysを参照します。

設定ファイルでは以下が利用されています。

AuthorizedKeysFile .ssh/authorized_keys

通常は変更する必要はありません。

特殊な運用でのみ変更します。

接続制限を追加できる

authorized_keysでは接続制限を設定できます。

from="192.168.60.*" ssh-ed25519 AAAA...

指定ネットワークからのみ接続可能になります。

他にもさまざまな制限が可能です。

  • 接続元制限
  • コマンド固定
  • ポートフォワード禁止
  • X11転送禁止

コマンド実行専用アカウントの設定

バックアップや自動化用途では特定コマンドのみ実行できるよう制限する場合があります。

command="/usr/local/bin/backup.sh" ssh-ed25519 AAAA...

認証後に指定コマンドだけ実行されます。

高度な運用で利用されます。

実務での管理ポイント

企業環境ではauthorized_keys管理が非常に重要です。

  • 誰の鍵かコメントを付ける
  • 不要鍵を定期削除する
  • 退職者の鍵を削除する
  • 共有アカウントを避ける
  • 公開鍵一覧を管理する

監査対象になることもあります。

SELinux環境での注意点

SELinuxが有効な環境ではコンテキストも重要です。

確認方法です。

$ ls -lZ ~/.ssh

問題がある場合はrestoreconで修正できます。
restorecon -Rv ~/.ssh

AlmaLinuxやRocky Linuxではよく利用します。

実務でよくあるトラブル

  • 公開鍵を間違えて登録した
  • 改行が消えて認証できない
  • 権限が600になっていない
  • ユーザー所有になっていない
  • SELinuxコンテキスト異常

SSH接続障害ではまずauthorized_keysを確認することが多くなります。

まとめ

authorized_keysはSSH公開鍵認証で利用する公開鍵を保存する重要なファイルです。

サーバはこのファイルを参照して認証を行うため、公開鍵認証の中心的な役割を担っています。

パーミッションや所有者設定が正しくないと認証できないため、Linux管理者は管理方法を理解しておく必要があります。

SSH運用では頻繁に登場するファイルですので、役割や設定方法をしっかり覚えておきましょう。