楽しいだけで十分です

好きなことを書きます

OpenSSHでログインできるまでの流れ

SSHをなんとなくで使っていて、サーバーと接続できないとなった時に、どこから調べたらいいんだろうな?ってことがままあったので、お勉強を始めてみました。

ひとまずSSHでログインできるところまでの流れをまとめます。
なお、OpenSSHのプロトコルバージョン2の話です。

全体の流れ

  1. パラメータネゴシエーション
  2. セッション鍵交換 (DH鍵交換)
  3. ホスト認証
  4. ユーザ認証
  5. セッションの確立

パラメータネゴシエーション

  • サーバーとクライアント間で使用する暗号方式やホスト鍵の形式を決めます
  • 形式については、サーバーが提示するものをクライアントが選択して行きます。
    • このやりとりの中で、決められない項目が1つでもある場合は、接続が終了します。

セッション鍵交換

ホスト認証

  • ホスト認証では、クライアントが「ログイン先のサーバーが正しいかどうか」を確認します。
  • 確認方法として、クライアントはサーバーから送られてきたホスト公開鍵をホスト公開鍵データベース(~/.ssh/known_hosts)と照合し、接続するかを判断します。
  • デジタル署名を行い、クライアントに対してサーバーの証明を行います。

ユーザ認証

  • ユーザ認証では、ログイン先のサーバーが接続してくるクライアントに対して、「正規のクライアントであるかどうか」を確認します。
  • 確認方法として、クライアントは使用する認証方式をサーバーにリクエストし、それぞれの認証方式の手続きを経て完了させます。

セッションの確立

  • セッション鍵の共有、ホスト認証、ユーザ認証がすべて完了するとセッションが確立し、環境の確認や設定、シェルへのログインが行われます。

参考

gihyo.jp