1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SSH通信時の認証の仕組み

Last updated at Posted at 2025-04-07

SSH通信時に使う鍵や、鍵の配置場所などが分からなくなるので整理する!

SSH通信の3フェーズ

1.鍵交換・セッション鍵の確立
SSH接続開始時にはまず鍵交換が行われ、共通鍵(セッション鍵)が作成される。以降の各認証フェーズでの通信は、この共通鍵によって全て暗号化される。

2.ホスト認証
接続先サーバーの正当性を確認するために行われる。
:warning: ホスト認証でも公開鍵と秘密鍵のペアを使うため、公開鍵認証の鍵と混乱しないように注意!

3.ユーザー認証
接続要求をしているユーザーの正当性を確認するために行われる。
:warning:ユーザー認証の手法としてパスワード認証や公開鍵認証があり、ここでは公開鍵認証について記載する。

ホスト認証

ホスト認証(接続先サーバーの認証)について記載する。

ホスト認証用の鍵ペア

  • OSの起動時に自動生成される、サーバー側の鍵ペアを使用する。

  • 一般的な配置先は以下の通り。

    • 公開鍵→/etc/ssh/ssh_host_*_key.pub
    • 秘密鍵→/etc/ssh/ssh_host_*_key
  • クライアント側の~/.ssh/known_hostsに、サーバー側の公開鍵を登録する。

ホスト認証の流れ

①クライアントからサーバーにSSH接続を要求する。

②サーバーがホスト認証用の公開ホスト鍵をクライアントに送付する。

③クライアントが公開ホスト鍵を照合する。
 a) 初回接続時
 ・サーバから受け取った公開ホスト鍵のフィンガープリントを確認し、正しければyesと入力する。これにより、クライアント側の~/.ssh/known_hostsに公開ホスト鍵が書き込まれる。なお、事前にサーバー側の公開ホスト鍵をクライアント側に登録しておく方法もある。

 b) 2回目以降
 ・サーバから受け取った公開ホスト鍵と~/.ssh/known_hostsに格納された公開ホスト鍵をクライアントが比較する。一致しなかった場合は警告が表示されるため、偽ホストの可能性が高いことに気づくことができる。

④公開鍵暗号方式または署名の検証によってホスト認証を行う。
 SSH v2の場合
・サーバーがホスト認証用の秘密ホスト鍵を使い、ランダムなチャレンジデータに対する署名を作成する。
・クライアントが公開ホスト鍵を使い、サーバー側が作成した署名を検証する。署名が正しい場合、ユーザー認証へ進む。

ユーザー認証

ユーザー認証のうち、公開鍵認証について記載する。

公開鍵認証用の鍵ペア

  • 原則として、ユーザーが手動で作成した鍵ペアを使用する。

  • ssh-keygenコマンドで鍵ペアを作成した場合、鍵ペアデフォルトでは~/.ssh配下に保存される。

  • サーバー側の~/.ssh/authorized_keysに、クライアント側の公開鍵を登録する。

公開鍵認証の流れ

※事前準備として、クライアント側の公開ユーザー鍵をサーバー側の~/.ssh/authorized_keysに記載しておく。

①クライアントからサーバーにSSH接続を要求する。

②サーバーがパスワード認証と公開鍵認証のどちらを使うのか判断する。~/.ssh/authorized_keysに公開ユーザー鍵の登録があれば、公開鍵認証を試みる。

③サーバーがランダムなチャレンジデータを生成し、クライアントに送付する。

④クライアントが公開鍵認証用の秘密ユーザー鍵を使い、チャレンジデータに対する署名を作成する。

⑤サーバーが~/.ssh/authorized_keysに登録済みの公開ユーザー鍵を使い、クライアント側が作成した署名を検証する。署名が正しい場合、ユーザーのログインを許可する。

参考

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?